Xu hướng xoay vòng; team production vẫn ship với Bloc vì nó dự đoán được . UI gửi event; bloc emit state; widget rebuild từ state. Vì sao scale được Event log debug được. Test bloc không cần pump cả app. Biên sở hữu feature rõ ràng. Mẹo dùng hiện đại Ưu tiên builder/selector của flutter_bloc hơn rebuild cả trang. Giữ bloc không dính side-effect điều hướng BuildContext . Ghép tầng repository — bloc không phải data layer. Cạm bẫy God-bloc ôm cả app. Chia theo feature và lifecycle. Cũng đừng map 1:1 mọi thay đổi field thành event. Nếu team cần architecture mặc định năm 2026, Bloc vẫn là câu trả lời bảo vệ được. Bài viết gốc đăng tại FlutterCook . Bản trên đó là bản được cập nhật mới nhất.
Appwrite Flutter: backend service với client rõ ràng appwrite đáng chú ý vì nó giải quyết cấu hình endpoint/project, auth, database, storage và function. Bài này trình bày cách đặt package vào đúng boundary của một ứng dụng Flutter production thay vì chỉ copy một snippet vào màn hình. Package này sở hữu phần nào? Giữ API của package ở một adapter hoặc feature boundary có tên rõ ràng. Đưa lifecycle, lỗi và trạng thái loading vào contract mà UI có thể kiểm thử. Chỉ expose capability cần thiết; đừng để toàn app phụ thuộc vào chi tiết triển khai. Snippet bắt đầu final client = Client () . setEndpoint ( 'https://cloud.appwrite.io/v1' ) . setProject (projectId); final account = Account (client); await account. createEmailPasswordSession ( email : email, password : password, ); Checklist trước khi ship Đọc README và changelog của package đúng version đang pin. Viết một test cho lifecycle, lỗi và hành vi khi app về background. Kiểm tra Android, iO...