flutter study-One

0 阅读2分钟

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 开始,它是最现代的解决方案。