Menu
CoddyTech
flag Ar iconالعربيةdown icon

حقول يمكن أن تكون فارغة

جزء من قسم القوائم والشاشات في رحلة 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')
challenge icon

التحدي

سهل

كُتبت عناوين البريد الإلكتروني بأحرف كبيرة عشوائية، ولا يملك 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});
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس القوائم والشاشات

تدرّب بنفسك: مترجم Flutter عبر الإنترنت