Ngăn kéo bên
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 25 trên 33.
Drawer là một bảng trượt vào từ bên cạnh, dùng cho những mục trong ứng dụng không phù hợp với các tab. Thêm nó vào Scaffold:
Scaffold(
appBar: AppBar(title: Text(folder)),
drawer: Drawer(
child: ListView(
children: [
const DrawerHeader(child: Text('Mail')),
ListTile(
title: const Text('Sent'),
onTap: () {
setState(() {
folder = 'Sent';
});
Navigator.pop(context);
},
),
],
),
),
)Khi có ngăn kéo, thanh ứng dụng sẽ hiển thị nút menu ba gạch ở đầu thanh. Chạm vào nút đó hoặc vuốt từ mép màn hình vào để mở ngăn kéo.
Ngăn kéo vẫn mở cho đến khi có thao tác đóng nó. Ngăn kéo đang mở giống như một màn hình nằm phía trên trang, vì vậy Navigator.pop(context) sẽ đóng nó. Gọi lệnh này sau khi bạn chạm vào một hàng, nếu không ngăn kéo sẽ che mất trang bạn chọn.
DrawerHeader là vùng lớn ở trên cùng, dùng để hiển thị tên ứng dụng hoặc tài khoản đã đăng nhập.
Thử thách
DễMở ngăn kéo bằng nút menu: trong đó chỉ có Inbox. Thêm hai hàng nữa giống hàng Inbox, mỗi hàng sẽ đặt folder và đóng ngăn kéo:
Sent, vớiIcons.sendTrash, vớiIcons.delete
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) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
const HomeScreen({super.key});
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
String folder = 'Inbox';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(folder)),
body: Center(
child: Text('No messages in $folder'),
),
drawer: Drawer(
child: ListView(
children: [
const DrawerHeader(
child: Text('Mail', style: TextStyle(fontSize: 24)),
),
ListTile(
leading: const Icon(Icons.inbox),
title: const Text('Inbox'),
onTap: () {
setState(() {
folder = 'Inbox';
});
Navigator.pop(context);
},
),
],
),
),
);
}
}
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àng5Nhiề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