Menu
CoddyTech

Các trường có thể để trống

Thuộc phần Danh sách và màn hình trong hành trình Flutter của Coddy. Bài học 14 trên 33.

Không phải liên hệ nào cũng có email. Một trường có thể không chứa giá trị nào sẽ có ? sau kiểu dữ liệu, và giá trị của nó là null khi không có gì được cung cấp:

class Contact {
  final String name;
  final String? email;

  Contact({required this.name, this.email});
}

Nếu không có required, bạn có thể bỏ email:: Contact(name: 'Alan Turing') có email là null.

Bạn không thể gọi phương thức trên null, vì vậy Dart ngăn bạn viết contact.email.toLowerCase(). Hãy viết ?. thay cho dấu chấm: contact.email?.toLowerCase() gọi phương thức khi có email và trả về null khi không có. Sau đó, ?? chọn giá trị dự phòng:

Text(contact.email?.toLowerCase() ?? 'No email')
challenge icon

Thử thách

Dễ

Email được nhập với chữ hoa ngẫu nhiên, còn Alan thì không có email. Thêm subtitle: vào mỗi ô để hiển thị email bằng chữ thường hoặc No email nếu không có email.

Tự làm thử

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 iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Danh sách và màn hình

Tự luyện tập: Trình biên dịch Flutter online