flutter_bloc: event và state rõ ràng cho ứng dụng lớn flutter_bloc đáng chú ý vì nó giải quyết Cubit, Bloc, BlocListener và chuyển trạng thái dễ dự đoán. 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 sealed class CheckoutState {} final class CheckoutIdle extends CheckoutState {} final class CheckoutSubmitting extends CheckoutState {} final class CheckoutDone extends CheckoutState {} class CheckoutCubit extends Cubit < CheckoutState > { CheckoutCubit ( this .repository) : super ( CheckoutIdle ()); final CheckoutRepository repository; Future < void > submit ( Order ord...