Quy tắc quản lý state với Bloc
Bộ quy tắc thực chiến để thiết kế, viết và test Cubit/Bloc trong Flutter bằng bloc và flutter_bloc.
Lập trìnhTrung cấp★ 646⑂ 67Điểm AI 9/10Cập nhật lần cuối: 14 thg 9, 2026
Làm được gì
Giúp Claude Code viết code quản lý state trong Flutter đúng convention chuẩn của hệ sinh thái bloc.
- Chọn Cubit hay Bloc: state đơn giản dùng Cubit, cần truy vết event hoặc debounce/throttle thì dùng Bloc.
- Quy ước đặt tên: event ở thể quá khứ (
LoginButtonPressed), state là danh từ (LoginInProgress). - Mô hình hoá state: khi nào dùng sealed class với các subclass, khi nào dùng một class kèm enum status; kèm quy tắc
Equatable,@immutable,copyWith. - Gắn widget: bảng công dụng của BlocProvider, BlocBuilder, BlocListener, BlocSelector và nguyên tắc dùng
context.read/watch. - Kiến trúc 3 lớp: Presentation → Business Logic → Data (Repository → DataProvider), cấm bloc gọi trực tiếp bloc khác.
- Test: mẫu
bloc_test+mocktailcho case thành công và thất bại. - Bảng lỗi thường gặp và cách sửa.
Phù hợp với ai
- Dev Flutter làm app vừa và lớn với bloc/flutter_bloc
- Tech lead muốn thống nhất style code state management trong nhóm
- Nhóm đang chuyển từ setState/Provider sang bloc
- Người muốn kết quả AI sinh code state management ổn định, dễ review
Ví dụ sử dụng
- "Tạo Cubit cho chức năng đăng nhập" → sinh state class dùng enum status, copyWith và constructor inject repository theo chuẩn.
- "Refactor màn hình này từ setState sang bloc" → định nghĩa sealed state và tách BlocBuilder / BlocListener.
- "Viết test cho CartCubit" → sinh
blocTestkiểm tra thứ tự emit loading/success/failure kèmtearDown.
· · · 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/⚠ Đâ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.
- Clone repo:
git clone https://github.com/evanca/flutter-ai-rules.git - Tạo thư mục skill:
mkdir -p ~/.claude/skills - Copy skill bloc:
cp -r flutter-ai-rules/skills/bloc ~/.claude/skills/ - Kiểm tra:
ls ~/.claude/skills/bloc/SKILL.md - Mở lại Claude Code trong thư mục dự án Flutter của bạn.
- Thử yêu cầu "tạo Cubit cho tính năng này" — skill sẽ tự kích hoạt. (Dự án cần có package
bloc,flutter_bloc, vàbloc_test,mocktailđể test.)
Xem mã nguồn trên GitHub ↗Giấy phép: MIT