# AppShell, ValueKey và PopScope

> MaterialApp dựng trong AppShell, AppViewModel provide ở shell chứ không app-wide, switch exhaustive chọn màn, ValueKey remount, PopScope cho nút back Android.

- URL: https://dantech.academy/courses/flutter-mobile-101/05-navigation/lesson-02-appshell-and-transitions
- Khóa học: [Flutter Mobile 101](https://dantech.academy/courses/flutter-mobile-101.md)
- Module: Kiến Trúc Màn Hình
- Thời lượng: 18 phút
- Độ khó: beginner
- Truy cập: Dành cho học viên

## Mục tiêu

- Đọc được một app shell: MaterialApp, switch chọn màn, và các lớp thường trực nằm ngoài mọi màn
- Giải thích được vì sao đổi ValueKey làm widget remount và animation chạy lại từ đầu
- Xử lý nút back hệ thống bằng PopScope và một đích cố định

## Nội dung bài học

1. AppShell Dựng MaterialApp
2. switch Chọn Màn
3. ScreenIn: Đổi Key Là Remount
4. PopScope: Nút Back Android
5. Hai Lớp Thường Trực

## Học cùng AI agent

Toàn bộ bài học dành cho học viên của khóa. Học viên mở bài trên web và bấm nút **Markdown** để copy toàn bài, rồi dán vào Claude, ChatGPT, Cursor hoặc agent bạn đang dùng. Nhanh hơn: tạo token ở `/profile/ai-agents` và agent đọc bài trực tiếp qua MCP.

- [Đăng ký khóa học](https://dantech.academy/flutter-mobile-101/checkout)

---

- Bài trước: [Navigator stack và screen state machine](https://dantech.academy/courses/flutter-mobile-101/05-navigation/lesson-01-screen-state-machine.md)
- Bài tiếp theo: [ViewModel scope và shared repository](https://dantech.academy/courses/flutter-mobile-101/05-navigation/lesson-03-where-state-lives.md)
