flutter-dart-code-review
库无关的Flutter/Dart代码审查清单,涵盖Widget最佳实践、状态管理模式(BLoC、Riverpod、Provider、GetX、MobX、Signals)、Dart惯用法、性能、可访问性、安全性和整洁架构。
适用对象:移动应用开发。自动收录 · 待核查。
原作者说明节选
从固定版本的 SKILL.md 提取,保留原文语言。以下内容属于作者说明,本站尚未验证安装、兼容或运行结果。
查看中文原文
原文涵盖的主题
- Flutter/Dart 代码审查最佳实践
- 1. 通用项目健康度
- 2. Dart 语言陷阱
- 3. 部件最佳实践
- 部件分解:
- Const 使用:
- Key 使用:
- 主题与设计系统:
适用于审查 Flutter/Dart 应用程序的全面、与库无关的清单。无论使用哪种状态管理方案、路由库或依赖注入框架,这些原则都适用。 \[ ] 项目遵循一致的文件夹结构(功能优先或分层优先) \[ ] 关注点分离得当:UI、业务逻辑、数据层 \[ ] 部件中无业务逻辑;部件纯粹是展示性的 \[ ] pubspec.yaml 是干净的 —— 没有未使用的依赖项,版本已适当固定 \[ ] analysisoptions.yaml 包含严格的 lint 规则集,并启用了严格的分析器设置 \[ ] 生产代码中没有 print() 语句 —— 使用 dart:developer log() 或日志包 \[ ] 生成的文件 (.g.dart, .freezed.dart, .gr.dart) 是最新的或在 .gitignore 中 \[ ] 平台特定代码通过抽象进行隔离 \[ ] 隐式动态类型:缺少类型注解导致 dynamic —— 启用 strict-casts, strict-inference, strict-raw-types \[ ] 空安全误用:过度使用 !(感叹号操作符)而不是适当的空检查或 Dart 3 模式匹配 (if (value case var v?)) \[ ] 类型提升失败:在可以使用局部变量类型提升的地方使用了 this.field \[ ] 捕获范围过宽:catch (e) 没有 on 子句;应始终指定异常类型 \[ ] 捕获 Error:Error 子类型表示错误,不应被捕获 \[ ] 未使用的 async:标记为 async 但从未 await 的函数 —— 不必要的开销 \[ ] late 过度使用:在可使用可空类型或构造函数初始化更安全的地方使用了 late;将错误推迟到运行时 \[ ] 循环中的字符串拼接:使用 StringBuffer 而不是 + 进行迭代式字符串构建 \[ ] const 上下文中的可变状态:const 构造器类中的字段不应是可变的 \[ ] 忽略 Future 返回值:使用 await 或显式调用 unawaited() 来表明意图 \[ ] 在 final 可用时使用 var:局部变量首选 final,编译时常量首选 const \[ ] 相对导入:为保持一致性,使用 package: 导入 \[ ] 暴露可变集合:公共 API 应返回不可修改的视图,而不是原始的 List/Map \[ ] 缺少 Dart 3 模式匹配:优先使用 switch 表达式和 if-case,而不是冗长的 is 检查和手动类型转换 \[ ] 为多重返回值使用一次性类:使用 Dart 3 记录 (String, int) 代替一次性 DTO \[ ] 生产代码中的 print():使用 dart:developer log()
这里只展示节选,请以完整原文和当前要求为准。
- 来源仓库
- affaan-m/ECC
- 源文件
- docs/zh-CN/skills/flutter-dart-code-review/SKILL.md
- 固定版本
- d2ef2680594f9a17526a6e1a2e18b3d242c5d17b
来源与内容状态
本条为自动发现的元数据,尚未完成人工文档核查;适用性与运行结果待核查。
原作者:affaan-m/ECC · 原作者仓库元数据。文档核查:未核查。最近来源检查:2026-11-09T14:01:50.398Z。
分类由名称、说明与路径规则生成,分类不代表已核实适配。
许可与权利归属
MIT。第三方内容及版权归原作者,使用条件以原文为准。
许可原文 ↗本站没有因同步、复制或用户自报成功而将资源标为运行验证通过。
限制与注意事项
- 元数据收录不代表本站已经安装、适配、实测或进行安全审查。