SuperAPI AI 工具集

flutter

编程与开发

查看项目

更新于 10-15 13:28

技能介绍

用途

本技能面向 Flutter 应用开发,整理了一套以 Riverpod 为核心状态管理方案的工程实践参考,并搭配 Freezed 数据建模、go_router 路由导航与 mocktail 测试。适合希望在 Flutter 项目中统一采用这套技术组合进行结构组织、状态管理、路由与测试的开发者参考。

项目结构

文档给出了一种按职责分层的目录组织方式:lib 下分为 core(常量、扩展、router 配置、主题)、data(Freezed 模型、仓库实现、API 服务)、domain(业务实体、仓库接口)、presentation(公共 Widget、按功能拆分的 features、全局 providers),另有 main.dart 与 app.dart。测试目录分为 unit、widget、integration 三部分,并包含 pubspec.yaml、analysis_options.yaml 与 CLAUDE.md。

主要能力

Riverpod 状态管理

  • 覆盖多种 Provider 类型:Provider、StateProvider、NotifierProvider、AsyncNotifierProvider、FutureProvider、StreamProvider,以及带参数的 family provider。
  • 展示 Notifier 模式:通过 build 方法初始化状态,refresh 与 addUser 等方法配合 AsyncValue.guard 与 ref.invalidateSelf 更新状态。
  • AsyncValue 处理:使用 when 或 Dart switch 模式匹配处理 data、loading、error 三种状态。
  • ref 方法:watch、read、listen、invalidate、keepAlive 的使用场景说明。

Freezed 数据模型

  • 通过 @freezed 定义不可变模型,支持 @Default 默认值与 DateTime 可空字段,并通过 fromJson 生成反序列化。
  • 使用 sealed class 定义联合类型(如 AuthState 的 initial/loading/authenticated/unauthenticated/error),配合 when 做分支渲染。

go_router 导航

  • 通过 Provider 提供 GoRouter 实例,结合 refreshListenable 与 redirect 实现基于认证状态的路由重定向。
  • 支持嵌套路由、路径参数(如 /user/:id)、errorBuilder。
  • 导航方式包括 go、push、pop、pushReplacement 以及 goNamed 命名路由。

Widget 模式

  • 介绍 ConsumerWidget、ConsumerStatefulWidget 以及结合 flutter_hooks 的 HookConsumerWidget 的写法与生命周期管理(如 dispose 释放控制器)。

测试与配置

  • 单元测试:使用 mocktail 的 Mock 与 when/verify,搭配 ProviderContainer 的 overrides 注入模拟仓库。
  • Widget 测试:通过 ProviderScope 的 overrides 覆盖 provider,测试数据与加载状态。
  • 文档附有 pubspec.yaml 依赖清单(flutter_riverpod、riverpod_annotation、freezed_annotation、json_annotation、go_router、dio、shared_preferences、intl 及对应 dev 依赖)、GitHub Actions 的 Flutter CI 流程(安装依赖、代码生成、analyze、test、构建 APK)以及 analysis_options.yaml 的严格类型检查与 lint 规则。

适用场景

适用于采用 Flutter 构建跨平台应用,并希望统一使用 Riverpod + Freezed + go_router + mocktail 技术栈进行分层架构、状态管理、路由与测试的团队或个人项目。

限制

文档未说明具体支持的 Flutter / Dart 版本范围以外的兼容性、各依赖包的确切行为差异,也未提供性能、收费或平台支持方面的信息;以上内容暂未提供。运行时需以实际依赖版本与官方文档为准。