Skip to content

项目模板

概述

我们提供四种项目模板(only/min/normal/pro),覆盖从极简原型到企业级应用的全场景需求。通过本指南您将了解:

  • 各模板的核心差异
  • 如何根据项目需求选择
  • 典型项目结构示例

全面对比表

功能特性onlyminnormalpro
基础入口 (main.dart)
标准项目结构
路由管理系统
主题管理系统
状态管理方案
开发工具集
UI组件库
网络请求框架
数据持久化

核心差异

  • only:仅保留最小运行单元(适合验证核心功能)
  • min:三大基石(路由/主题/状态管理)
  • normal:增加 UI 组件库(提升开发效率)
  • pro:完整解决方案(含网络层+数据持久化)

模板项目结构演进

从最小运行单元到企业级架构,四个模板层层递进,每个模板都基于前序模板扩展功能模块

1. 基础单元:only 模板

js
# 极简结构
lib/
└── main.dart   //  主入口文件

适用边界

  • 技术验证(Proof of Concept)
  • 单文件组件测试

2. 架构基石:min 模板

在 only 模板基础上新增 8 个核心模块,构建完整应用骨架

js
.
├── common (公共模块)          
├── config (配置模块)          
├── init (初始化模块)          
├── main.dart (主入口文件)     // 继承自 only 模板
├── models (数据模型模块)      
├── network (网络模块)         
├── pages (页面模块)           
├── tools (工具模块)           
├── vm (视图模型模块)          
└── widget (组件模块)          

核心能力

  • 提供通用项目架构
  • 路由管理:支持多页面跳转
  • 主题管理:暗黑模式适配

3. 效率增强:normal 模板

在 min 模板基础上新增 UI 组件库及工具类封装,提升开发效率

js
.
├── common/
│   ├── ...
│   ├── base_ui/             // UI组件基类
│   │   ├── base_normal_ui   // 示例模块  基础普通UI基类
│   ├── constanst/
│   │   └── sp_id_constanst.dart  // 示例模块  常量定义
│   ├── utils/
│   │   ├── ...
│   │   └── utils.dart    // 示例模块  工具类
│   └── widgets/  
│       ├── ...
│       ├── place_holder_widget.dart  // 示例模块  占位组件
│       └── refresh_widgets.dart  // 示例模块  刷新组件
├── config/
│   ├── data/
│   │   ├── ...
│   │   └── sp_config.dart  // 示例模块  配置类
│   └── ...
├── init
├── main.dart
├── models
│   ├── ...
│   └── demo_item_model.dart  // 示例模块  数据模型
├── network/
│   ├── apis/
│   │   ├── ...
│   │   └── demo_mock_apis.dart  // 示例模块  模拟API接口
│   ├── index.dart
│   └── transformers
├── pages/
│   ├── ...
│   └── demo_list_v.dart  // 示例模块  列表页
├── tools/  
│   ├── ...
│   ├── scree_tool.dart  // 示例模块  屏幕工具类
│   ├── shared_preferences_tool.dart  // 示例模块  共享偏好工具类
├── vm/
│   ├── demo_list_vm.dart  // 示例模块  列表页视图模型
│   └── demo_vm.dart  // 示例模块  详情页视图模型
└── widget

增强特性

  • 预置 UI 基类:提供通用base_ui和GetX base_ui两种方案
    • base_normal_ui:基于Flutter原生状态管理的UI基类
    • base_get_ui:基于GetX状态管理的UI基类(在GetX分支中)
  • 常用工具类封装:屏幕适配、本地存储等工具
  • 完整MVVM示例:展示最佳实践的代码结构
  • 统一缺省页面:加载、错误、空数据状态页面

💡 base_ui选择指南:新手推荐通用base_ui,GetX团队推荐GetX base_ui

4. 企业级方案:pro 模板

在 normal 模板基础上新增网络请求框架和数据持久化,支持复杂业务场景

js

.
├── common
│   ├── ...
│   └── base_ui\
│       ├── ...
│       └── base_get_ui //  基于GetX的UI基类
├── config
│   ├── ...
│   └── data\
│   │   ├── ...
│   │   └── http_normal_config.dart   
├── eg_module // 示例模块
|   ├── index.dart
|   ├── models
|   ├── network
|   ├── pages
|   ├── routers
|   ├── tools
|   ├── vm
|   └── widgets
├── init
├── main.dart
├── models
├── network
├── pages
├── tools\
│   ├── ...
│   ├── dio_cache_tool.dart  //  Dio缓存工具类
│   ├── getx_tool.dart  //   GetX工具类
│   ├── path_provider_tool.dart  // 路径提供工具类
│   └── request_tool.dart //  请求工具类
├── vm
└── widget

企业级特性

  • 网络请求:封装拦截器、缓存、错误重试机制
  • 数据持久化:支持本地存储方案
  • 模块化设计:示例模块可直接复用

想了解更多项目结构区别,请查看项目结构

选择决策树

决策说明

  1. 首先根据项目规模选择基础模板
  2. 再通过功能需求细化选择
  3. 企业级项目建议直接选用pro模板

典型应用场景

需求场景推荐模板选择理由
学习 Flutter 基础only零干扰学习核心API
开发个人工具min快速实现基础功能
企业级管理系统pro完整架构保障可维护性
中型商业应用normal平衡开发效率与功能完备性

注意事项

  • 模板迁移成本:建议初期选择稍复杂的模板以预留扩展空间
  • 技术栈匹配:根据团队熟悉度选择对应功能模块

根据 MIT 许可发布。