SuperAPI AI 工具集

dart-flutter-patterns

编程与开发

查看项目

更新于 10-15 08:34

技能介绍

Dart/Flutter Patterns 是一个面向 Dart 与 Flutter 应用的编码模式技能,强调生产可用,尽可能与具体库无关,同时对生态中最常见的包给出明确覆盖。

何时使用

  • 开始新的 Flutter 功能开发,需要符合惯用法的状态管理、导航或数据访问模式。
  • 编写或审查 Dart 代码,需要空安全、sealed 类型或异步组合方面的指导。
  • 搭建新的 Flutter 项目,需要在 BLoC、Riverpod 或 Provider 之间做选择。
  • 实现安全的 HTTP 客户端、WebView 集成或本地存储。
  • 为 Flutter Widget、Cubit 或 Riverpod provider 编写测试。
  • 用 GoRouter 配合鉴权守卫进行路由接线。

工作方式 该技能按关注点组织提供可直接复制使用的 Dart/Flutter 代码模式:

  • 空安全:避免 !,优先使用 ?./??/模式匹配。
  • 不可变状态:sealed 类、freezed、copyWith。
  • 异步组合:并发的 Future.wait、await 之后安全使用 BuildContext。
  • Widget 架构:抽成类(而非方法)、const 传播、缩小重建范围。
  • 状态管理:BLoC/Cubit 事件、Riverpod notifier 与派生 provider。
  • 导航:GoRouter 配合通过 refreshListenable 实现的响应式鉴权守卫。
  • 网络:Dio 配合拦截器、带一次性重试保护的 token 刷新。
  • 错误处理:全局捕获、ErrorWidget.builder、crashlytics 接线。
  • 测试:单元测试(BLoC test)、Widget 测试(ProviderScope overrides)、优先 fake 而非 mock。

主要能力与代码模式

  1. 空安全基础:优先模式匹配而非 ! 操作符,提供回退值或提前返回守卫;避免滥用 late,仅在首次访问前保证完成初始化时(如 initState 中)使用 late。
  2. 不可变状态:用 sealed 类构建状态层级并借助穷尽 switch 让编译器强制覆盖所有分支;用 Freezed 消除样板代码,获得 copyWith、toJson/fromJson 等能力。
  3. 异步组合:用 Future.wait 做结构化并发而非顺序 await;用 Stream 暴露响应式数据并在 StreamBuilder 中声明式消费;在 StatefulWidget 中每次 await 之后检查 mounted。
  4. Widget 架构:抽取为独立 Widget 类而非返回 Widget 的私有方法,以便 const 与元素复用;通过 const 传播阻止重建扩散;将会变化的部分隔离到独立 Widget 中实现局部重建。
  5. 状态管理 BLoC/Cubit:Cubit 以 emit 驱动同步或简单异步状态,在 Widget 中用 switch 处理各状态分支。
  6. 状态管理 Riverpod:使用自动释放的异步 provider、带复杂变更的 Notifier(add/remove/clear)、以及派生 provider(selector 模式,如 cartCount、cartTotal),并用 firstWhereOrNull 避免 StateError。
  7. GoRouter 导航:通过 refreshListenable 绑定鉴权流,在 redirect 中根据登录状态跳转,使用 ShellRoute 组织嵌套路由并读取 pathParameters。
  8. Dio HTTP:配置 baseUrl、超时与请求头;用拦截器注入 Bearer token,并在 401 时做一次性 token 刷新,防止无限重试循环;Repository 中封装数据源。
  9. 错误处理架构:在 main() 中设置 FlutterError.onError 与 PlatformDispatcher.instance.onError 做全局捕获并上报 crashlytics;为生产环境自定义 ErrorWidget.builder。
  10. 测试速查:单元测试、blocTest(断言 loading 后 error 的状态序列)、Widget 测试(用 ProviderScope overrides 注入 fake)。

适用场景 适用于 Flutter 功能开发、代码审查、项目脚手架搭建、状态管理方案选型、网络与导航接入、错误监控以及测试编写等日常 Dart/Flutter 工程实践。

限制 该技能为代码模式与范例集合,具体的包版本、价格与平台支持范围在提供的资料中暂未说明。