flutter-coding
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseFlutter Coding
Flutter 编码
Điều kiện tiên quyết
前置条件
- phải đã được cài trong project (
flutter/agent-plugins). Nếu chưa thấy skill này available, báo cho user cài trước khi tiếp tục — không tự viết code theo "kinh nghiệm chung chung" thay thế.npx skills add flutter/agent-plugins --skill '*' - Đã đọc và
architecture/SKILL.mdtrong lượt hiện tại.design-system/SKILL.md
- 项目中必须已安装 (执行命令
flutter/agent-plugins)。如果该技能不可用,请告知用户先进行安装,不要用“通用经验”替代编写代码。npx skills add flutter/agent-plugins --skill '*' - 当前已阅读 和
architecture/SKILL.md文档。design-system/SKILL.md
Thứ tự ưu tiên khi viết code
编写代码的优先级顺序
- Instruction từ (Material 3, Riverpod, GoRouter, JSON serialization...) là chuẩn cao nhất.
flutter/agent-plugins - Rule cứng từ (vị trí file, naming) không được vi phạm.
architecture/SKILL.md - Token từ cho mọi giá trị UI.
design-system/SKILL.md - Model/field phải khớp đúng với delta spec trong (đặc biệt sau khi qua
openspec/changes/<change-name>/specs/).schema-migration
- 的指令(Material 3、Riverpod、GoRouter、JSON serialization...)为最高标准。
flutter/agent-plugins - 中的硬性规则(文件位置、命名规范)不得违反。
architecture/SKILL.md - 所有UI值均使用 中的Token。
design-system/SKILL.md - Model/字段必须与 中的delta spec完全匹配(尤其是经过
openspec/changes/<change-name>/specs/之后)。schema-migration
Quy trình viết 1 tính năng
单个功能的编写流程
- Đọc liên quan đến tính năng đang làm (dùng
openspec/changes/<change-name>/{proposal.md, tasks.md, specs/}nếu change đã tồn tại từ trước)./opsx:continue - Tạo/sửa file theo đúng cấu trúc .
feature/<ten_feature>/{data,domain,application,presentation} - Model dùng +
freezednếu project đã dùng codegen, giữ nhất quán với các model khác trong project.json_serializable - Provider Riverpod dùng codegen (), đặt trong
@riverpod.application/ - Route mới đăng ký trong (GoRouter), không hard-code Navigator.push rời rạc.
app/router/ - UI trong , ưu tiên tái sử dụng từ
presentation/screens|widgets.shared/widgets/
- 阅读与当前开发功能相关的 文档(若变更已存在,可使用
openspec/changes/<change-name>/{proposal.md, tasks.md, specs/})。/opsx:continue - 按照 的结构创建/修改文件。
feature/<功能名称>/{data,domain,application,presentation} - 如果项目已使用代码生成工具,Model需使用 +
freezed,与项目中其他Model保持一致。json_serializable - Riverpod Provider使用代码生成(),放置在
@riverpod目录下。application/ - 新路由在 (GoRouter)中注册,不得零散硬编码Navigator.push。
app/router/ - UI代码放在 目录下,优先复用
presentation/screens|widgets中的组件。shared/widgets/
Sau khi viết xong
代码编写完成后
- KHÔNG dừng lại ở "code xong là done". Luôn chuyển sang để build/chạy thử thật.
mcp-loop/SKILL.md - Nếu trong lúc code phát hiện cần package chưa có trong danh sách duyệt của → dừng, hỏi xác nhận, không tự thêm.
architecture.md
- 不要停留在“代码写完就结束”的阶段。务必切换到 进行实际构建/运行测试。
mcp-loop/SKILL.md - 如果编码过程中发现需要使用 白名单之外的包,请暂停操作,询问确认后再进行,不得自行添加。
architecture.md
Lỗi thường gặp cần tránh
需要避免的常见错误
- Không tạo tùy tiện trong widget đã có provider quản lý state tương ứng.
setState - Không tự đổi tên field model đã tồn tại nếu không đi qua (sẽ vỡ data cũ).
schema-migration - Không copy nguyên văn code mẫu từ agent-plugins mà không áp token của design-system (dễ bị lệch theme).
- 在已有provider管理对应状态的widget中,不要随意使用 。
setState - 未经过 不得擅自修改已存在的model字段名称(会导致旧数据失效)。
schema-migration - 不要直接复制agent-plugins中的示例代码而不应用design-system的Token(容易导致主题不一致)。