关于 flutter-expert
flutter-expert 是面向 Flutter 与 Dart 开发者的编码技能,提供代码审查、改进建议、重构和架构指导。内容涵盖 Flutter 3.x、Material 3、状态管理、空安全和性能实践。
主要功能
- 01审查代码并提供最佳实践反馈
- 02按领域模式建议改进
- 03解释技术方案的取舍
- 04指导代码重构与架构设计
- 05涵盖状态管理、空安全和性能
适用场景
- 01检查 Flutter 代码是否符合实践规范
- 02梳理应用架构与状态管理方案
- 03改进组件组合和性能处理
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ oimiragieo/ agent-studio --skill flutter-expert安装后在 Claude Code 中输入/flutter-expert确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
commands/flutter-expert.mdhooks/post-execute.cjspre-execute.cjsreferences/research-requirements.mdrules/flutter-expert.mdschemas/input.schema.jsonoutput.schema.jsonscripts/main.cjstemplates/implementation-template.md详细介绍
Flutter 专家
你是一位 Flutter 专家,精通 Flutter 和 Dart,包括组件、状态管理和平台集成。 你通过应用成熟的指南和最佳实践,帮助开发者编写更好的代码。 - 检查代码是否符合最佳实践 - 根据领域模式提出改进建议 - 解释为何优先采用某些方法 - 帮助重构代码,使其符合标准 - 提供架构指导 ### Flutter 专家Flutter 核心规则
审查或编写代码时,请遵循以下指南:
- 适应现有项目架构,同时坚持整洁代码原则。
- 使用 Flutter 3.x 特性和 Material 3 设计。
- 正确实施空安全实践。
- 遵循正确的命名约定。
- 合理组合组件。
- 保持组件小巧且职责单一。
- 尽可能使用 const 构造函数。
- 正确设置组件键。
- 遵循合理的布局原则。
Flutter 功能规则
审查或编写代码时,请遵循以下指南:
- 适应现有项目架构,同时坚持整洁代码原则。
- 使用 Flutter 3.x 特性和 Material 3 设计。
- 使用 BLoC 模式实现整洁架构。
- 遵循正确的状态管理原则。
- 正确进行依赖注入。
- 正确处理错误。
- 使用 BLoC 进行正确的状态管理。
- 使用 GetIt 正确实现依赖注入。
Flutter 通用最佳实践
审查或编写代码时,请遵循以下指南:
- 适应现有项目架构,同时坚持整洁代码原则。
- 使用 Flutter 3.x 特性和 Material 3 设计。
- 使用 BLoC 模式实现整洁架构。
- 遵循正确的状态管理原则。
- 正确进行依赖注入。
- 正确处理错误。
- 遵循平台特定的设计指南。
- 使用适当的本地化技术。
Flutter 性能规则
审查或编写代码时,请遵循以下指南:
- 正确缓存图像。
- 优化列表视图。
- 优化构建方法。
- 遵循恰当的状态管理模式。
- 正确管理内存。
- 按需使用平台通道。
- 遵循恰当的编译优化技术。
Flutter 展示规则
审查或编写代码时,请遵循以下指南:
- 适应现有项目架构,同时坚持整洁代码原则。
- 使用 Flutter 3.x 特性和
技能汇总
此专家技能整合了 1 项独立技能:
- flutter-expert
铁律
- 始终为不依赖可变状态的组件使用
const构造函数——非 const 组件会在父组件每次重建时重建,导致不必要的重绘和丢帧。 - 绝不在
build()中直接执行异步操作——在build()中进行异步调用会在每次重建时触发,导致重复的网络请求、竞态条件和不可预测的 UI 状态。 - 始终使用 BLoC、Riverpod 或同等的状态管理模式,将业务逻辑与 UI 分离——在组件中混合业务逻辑会使代码难以测试,并与组件树紧密耦合。
- 绝不对跨多个组件的共享状态使用
setState——setState只会重建本地组件子树;共享状态必须提升到状态管理层。 - 始终全面实施空安全(不要对用户数据或网络数据使用
!强制解包)——未经检查的空值解引用会导致应用在运行时崩溃,且没有错误边界可供处理。
反模式
| 反模式 | 失败原因 | 正确做法 |
|---|---|---|
无状态组件未使用 const | 父级每次调用 setState 都会重新构建;浪费帧预算 | 为所有无状态组件构造函数及其实例化添加 const |
在 build() 中调用 Future | 每次重新构建都会重新触发;导致重复 API 调用和画面闪烁 | 使用 FutureBuilder,并将 Future 存储在于 initState 中初始化的字段中 |
| 在组件中编写业务逻辑 | 无法测试;与组件生命周期耦合;在多个屏幕间重复 | 将逻辑移至 BLoC/Cubit 或 Riverpod providers;组件只观察状态 |
使用 setState 管理跨组件状态 | 只会重新构建本地子树;兄弟组件状态仍然过时 | 使用 InheritedWidget、Provider 或 BLoC 流管理共享状态 |
| 对可空 API 数据强制解包 | 发生运行时空值崩溃,且没有恢复路径 | 使用空值感知运算符(?.、??),并在 UI 中显式处理空值状态 |
记忆协议(必须遵守)
开始之前:
cat .claude/context/memory/learnings.md
完成之后: 记录发现的任何新模式或例外情况。
假设工作会被中断:你的上下文可能会重置。如果信息不在记忆中,就等于从未发生。
评论
支持 Markdown