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')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});
}
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
1Danh sách cuộn
Danh sách có thể cuộnÔ danh sáchPhần đầu và phần cuốiChạm vào một ô danh sáchĐường phân cách giữa các hàng4Các lớp của riêng bạn
Một lớp cho dữ liệu của bạnTham số có tên và bắt buộcCác trường có thể để trốngTạo widget từ dữ liệu bằng mapLọc danh sách bằng whereTra cứu trong Map5Nhiều hơn một màn hình
Mở màn hình mớiMũi tên quay lạiQuay lại bằng nútGửi dữ liệu đến màn hìnhNhận lại kết quả6Tab, ngăn kéo và thao tác vuốt
Tab với thanh điều hướngBiểu tượng tô kín cho tab đang mởNgăn kéo bênVuốt để xóaHoàn tác thao tác vuốtTự luyện tập: Trình biên dịch Flutter online