[ PROMPT_NODE_23066 ]
flutter-app
[ SKILL_DOCUMENTATION ]
# Flutter 应用模板
## 技术栈
| 组件 | 技术 |
|-----------|------------|
| 框架 | Flutter 3.x |
| 语言 | Dart 3.x |
| 状态管理 | Riverpod 2.0 |
| 导航 | Go Router |
| HTTP | Dio |
| 本地存储 | Hive |
---
## 目录结构
project_name/
├── lib/
│ ├── main.dart
│ ├── app.dart
│ ├── core/
│ │ ├── constants/
│ │ ├── theme/
│ │ ├── router/
│ │ └── utils/
│ ├── features/
│ │ ├── auth/
│ │ │ ├── data/
│ │ │ ├── domain/
│ │ │ └── presentation/
│ │ └── home/
│ ├── shared/
│ │ ├── widgets/
│ │ └── providers/
│ └── services/
│ ├── api/
│ └── storage/
├── test/
└── pubspec.yaml
---
## 架构分层
| 层级 | 内容 |
|-------|----------|
| Presentation (表现层) | 页面, 组件, 提供者 |
| Domain (领域层) | 实体, 用例 |
| Data (数据层) | 仓库, 模型 |
---
## 关键包
| 包 | 用途 |
|---------|---------|
| flutter_riverpod | 状态管理 |
| riverpod_annotation | 代码生成 |
| go_router | 导航 |
| dio | HTTP 客户端 |
| freezed | 不可变模型 |
| hive | 本地存储 |
---
## 设置步骤
1. `flutter create {{name}} --org com.{{bundle}}`
2. 更新 `pubspec.yaml`
3. `flutter pub get`
4. 运行代码生成: `dart run build_runner build`
5. `flutter run`
---
## 最佳实践
- 以功能为导向的文件夹结构
- 使用 Riverpod 管理状态,使用 React Query 模式处理服务端状态
- 使用 Freezed 定义不可变数据类
- 使用 Go Router 进行声明式导航
- 使用 Material 3 主题设计