flutter 学习架构
Flutter 学习架构可以分为 学习路径、技术架构、项目架构 三个维度,我为你系统梳理如下:
一、Flutter 学习路径架构
阶段1:基础入门(1-2周)
-
Dart语言基础
- 变量、类型、控制流
- 函数、类、面向对象
- 异步编程(Future/Stream)
-
Flutter核心概念
- Widget树与渲染机制
- StatelessWidget vs StatefulWidget
- 基础Widgets(Text, Container, Row/Column等)
阶段2:核心技能(3-4周)
-
布局系统
- Flex布局、GridView、ListView
- 约束与尺寸原理
-
状态管理入门
- setState、InheritedWidget
- Provider基础使用
-
路由与导航
- Navigator 1.0/2.0
- go_router 或 auto_route
阶段3:进阶能力(4-6周)
-
高级状态管理
- Riverpod(推荐)
- BLoC/Cubit
- GetX(了解即可)
-
网络与数据
- Dio/HTTP客户端
- JSON序列化(json_serializable)
- 状态持久化(shared_preferences, sqflite)
-
混合开发
- 平台通道(Platform Channel)
- 插件开发基础
阶段4:工程化(2-3周)
-
项目架构模式
- 分层架构(数据层/业务层/UI层)
- Clean Architecture
- MVVM/MVI
-
测试与调试
- 单元测试、Widget测试、集成测试
- 性能优化技巧
二、Flutter 技术架构分层
1. 数据层(Data Layer)
dart
// 示例结构
lib/
├── data/
│ ├── datasources/ # 数据源
│ │ ├── local/ # 本地数据(SQLite/Hive)
│ │ └── remote/ # 远程API(Dio/GraphQL)
│ ├── models/ # 数据模型(entity)
│ └── repositories/ # 仓库模式(统一数据入口)
2. 业务逻辑层(Business Logic Layer)
dart
├── domain/
│ ├── entities/ # 领域实体
│ ├── repositories/ # 抽象仓库接口
│ └── usecases/ # 业务用例(可选)
├── application/
│ ├── providers/ # Riverpod Providers
│ ├── blocs/ # 或 BLoC/Cubit
│ └── viewmodels/ # 或 ViewModel
3. 表现层(Presentation Layer)
dart
├── presentation/
│ ├── pages/ # 页面组件
│ ├── widgets/ # 可复用UI组件
│ ├── dialogs/ # 弹窗
│ └── themes/ # 主题与样式
三、主流项目架构模式对比
1. 分层架构(推荐)
text
lib/
├── core/ # 核心工具类
├── data/ # 数据层
├── domain/ # 业务层
└── presentation/ # UI层
适合:大中型项目,团队协作
2. Clean Architecture
text
lib/
├── features/ # 按功能模块划分
│ ├── auth/
│ │ ├── data/
│ │ ├── domain/
│ │ └── presentation/
├── core/ # 共享核心
└── main.dart
适合:复杂业务,高可测试性需求
3. 简单MVVM(快速开发)
dart
// 使用 Provider/Riverpod + ChangeNotifier
lib/
├── models/ # 数据模型
├── viewmodels/ # ViewModel
├── views/ # 页面
└── services/ # 服务类
适合:中小型项目,快速迭代
四、状态管理方案选择
推荐方案
| 方案 | 适合场景 | 学习曲线 |
|---|---|---|
| Riverpod | 新项目首选,类型安全,灵活 | 中等 |
| BLoC/Cubit | 复杂状态逻辑,可预测状态流 | 较陡 |
| Provider | 入门级,简单场景 | 简单 |
| GetX | 快速开发,但耦合度高 | 简单 |
建议:从 Riverpod 开始,它是最现代的解决方案。