Quy tắc quản lý state với Bloc
Bộ quy tắc chuẩn để thiết kế, viết và test Cubit/Bloc trong Flutter bằng bloc & flutter_bloc.
Lập trìnhTrung cấp★ 617⑂ 59Điểm AI 9/10Cập nhật lần cuối: 21 thg 8, 2026
Làm được gì
- Đưa ra tiêu chí chọn
CubithayBloc(state đơn giản → Cubit; cần truy vết event, debounce/throttle → Bloc). - Chuẩn hoá cách đặt tên (event ở thể quá khứ, state là danh từ) và cách mô hình hoá state:
sealed classvới các subclass, hoặc một class duy nhất kèmstatus enum. - Quy tắc
Equatable,@immutable,copyWith; bảng tra cứu khi nào dùngBlocProvider,BlocBuilder,BlocListener,BlocConsumer,BlocSelector; ranh giới 3 tầng Presentation → Bloc → Repository → DataProvider. - Mẫu unit test với
bloc_test+mocktailvà danh sách lỗi thường gặp kèm cách sửa.
Phù hợp với ai
- Lập trình viên Flutter đang dùng kiến trúc bloc.
- Team lead muốn thống nhất convention và tiêu chí code review.
- Người muốn Claude Code sinh ra code Cubit/Bloc nhất quán về style.
Ví dụ sử dụng
- "Tạo Cubit cho chức năng đăng nhập" → sinh state class dùng status enum,
copyWith, luồng emit loading/success/failure đúng chuẩn. - "Refactor màn hình này từ setState sang bloc" → tách logic sang Cubit, UI dùng
BlocBuildervàBlocListenercho snackbar/điều hướng. - "Viết test cho LoginCubit" → sinh
blocTestkiểm tra chuỗi state cho cả trường hợp thành công và ném exception.
· · · Hướng dẫn cài đặt · · ·
Dùng thử ngay, không cần cài
Dán đoạn dưới vào Claude là dùng được skill này mà không cần cài đặt.
Hãy đọc hướng dẫn trong tệp này và làm theo để giúp mình: https://raw.githubusercontent.com/evanca/flutter-ai-rules/HEAD/skills/bloc/SKILL.md Mình muốn: (viết việc bạn cần ở đây)
Nếu Claude không mở được liên kết, hãy mở liên kết và copy nội dung vào rồi dán.
↓ Thấy hữu ích thì tải ZIP bên dưới và cài. Sau đó skill tự chạy, không phải dán lại mỗi lần.
Cài vào ứng dụng Claude (không cần terminal)
- Tải tệp ZIP bằng nút bên dưới.
- Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
- Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
Cài vào Claude Code
Để Claude làm — dán câu dưới đây vào Claude Code
Hãy cài skill mình tìm thấy trên Claude Skill Mart. Copy thư mục skills/bloc từ repo GitHub evanca/flutter-ai-rules vào ~/.claude/skills/bloc/ của mình. Sau khi cài xong, cho mình biết skill này làm được gì trong một câu.
Cài bằng lệnh thủ công
git clone https://github.com/evanca/flutter-ai-rules.git && mkdir -p ~/.claude/skills && cp -r flutter-ai-rules/skills/bloc ~/.claude/skills/bloc⚠ Đây là skill do người khác tạo. Hãy kiểm tra repo gốc trước khi cài.
- Mở terminal và clone repo:
git clone https://github.com/evanca/flutter-ai-rules.git - Tạo thư mục skills nếu chưa có:
mkdir -p ~/.claude/skills - Copy riêng skill bloc:
cp -r flutter-ai-rules/skills/bloc ~/.claude/skills/bloc - Kiểm tra file
~/.claude/skills/bloc/SKILL.mdđã tồn tại. - Khởi động lại Claude Code; khi bạn yêu cầu tạo Cubit/Bloc trong dự án Flutter, skill sẽ tự kích hoạt.
- Đảm bảo
pubspec.yamlcóflutter_bloc,equatablevà (cho test)bloc_test,mocktailđể code mẫu chạy được.
Xem mã nguồn trên GitHub ↗Giấy phép: MIT