حقول يمكن أن تكون فارغة
جزء من قسم القوائم والشاشات في رحلة Flutter على Coddy. الدرس 14 من 33.
ليس لكل جهة اتصال بريد إلكتروني. الحقل الذي قد لا يحتوي على شيء توضع علامة ? بعد نوعه، وتكون قيمته null عندما لا تُعطَ له أي قيمة:
class Contact {
final String name;
final String? email;
Contact({required this.name, this.email});
}من دون required، يمكن ترك email: من دون تحديد: Contact(name: 'Alan Turing') تكون قيمة email فيه null.
لا يمكنك استدعاء دالة على null، لذا يمنعك Dart من كتابة contact.email.toLowerCase(). اكتب ?. بدلًا من النقطة: يستدعي contact.email?.toLowerCase() الدالة عندما يكون هناك بريد إلكتروني، ويُعطي null عندما لا يكون هناك بريد. بعد ذلك، يختار ?? قيمة احتياطية:
Text(contact.email?.toLowerCase() ?? 'No email')التحدي
سهلكُتبت عناوين البريد الإلكتروني بأحرف كبيرة عشوائية، ولا يملك Alan أي عنوان. أضف إلى كل بلاطة subtitle: يعرض عنوان البريد الإلكتروني بأحرف صغيرة، أو No email إذا لم يكن لديه عنوان.
جرّب بنفسك
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
final List<Contact> contacts = [
Contact(name: 'Ada Lovelace', email: 'Ada@Example.com'),
Contact(name: 'Alan Turing'),
Contact(name: 'Grace Hopper', email: 'GRACE@NAVY.MIL'),
];
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(title: const Text('Contacts')),
body: ListView(
children: [
for (Contact contact in contacts)
ListTile(
title: Text(contact.name),
),
],
),
),
);
}
}
class Contact {
final String name;
final String? email;
Contact({required this.name, this.email});
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس القوائم والشاشات
1قوائم قابلة للتمرير
قائمة قابلة للتمريرعناصر القائمةالبداية والنهايةاضغط على عنصر قائمةفواصل بين الصفوف4أصنافك الخاصة
صنف لبياناتكالمعاملات المُسمّاة والإلزاميةحقول يمكن أن تكون فارغةعناصر واجهة من البيانات باستخدام mapتصفية قائمة باستخدام whereالبحث في Map6علامات التبويب والأدراج والتمرير بالسحب
علامات التبويب مع شريط تنقلأيقونات ممتلئة لعلامة التبويب المفتوحةدرج جانبياسحب للحذفالتراجع عن السحبتدرّب بنفسك: مترجم Flutter عبر الإنترنت