4.4 KiB
4.4 KiB
Flutter Template
一个从实际项目中提炼的 Flutter 通用快速开发模板,开箱即用,避免重复搭建工程基础设施。
目标
- 支持 Android 和 iOS
- 不包含原业务页面、接口、Model、资源、文案和私有配置
- 保留通用工程化能力:路由、主题、网络、缓存、日志、权限、工具类、状态管理和常用 UI 组件
- 默认首页为 demo 页面,可直接替换为新业务首页
技术栈
| 类别 | 依赖 | 用途 |
|---|---|---|
| 状态管理 | flutter_riverpod | 编译安全、可测试的状态管理 |
| 网络请求 | dio | HTTP 客户端,支持拦截器链 |
| 本地缓存 | shared_preferences | KV 持久化存储 |
| 网络监听 | connectivity_plus | 实时网络状态监测 |
| 权限申请 | permission_handler | 运行时权限请求 |
| 屏幕适配 | flutter_screenutil | 设计稿尺寸适配 |
| 图片加载 | cached_network_image | 网络图片缓存 |
| SVG | flutter_svg | SVG 渲染 |
| 下拉刷新 | pull_to_refresh | 下拉刷新 / 上拉加载 |
| 加载提示 | flutter_easyloading | Toast 和 loading |
| 设备信息 | device_info_plus | 设备元数据 |
| 应用信息 | package_info_plus | 版本号等应用信息 |
| 链接跳转 | url_launcher | 外部 URL 打开 |
| 代码规范 | flutter_lints | Dart 推荐 lint 规则 |
目录结构
lib/
├── app/ # 应用壳
│ ├── app.dart # MaterialApp、主题、国际化、全局配置
│ ├── bootstrap.dart # 启动初始化
│ ├── config/ # 多环境配置 (dev/staging/prod)
│ ├── router/ # Navigator 工具和路由栈跟踪
│ └── theme/ # 亮色/暗色主题、颜色、间距
├── core/ # 框架层基础设施
│ ├── cache/ # SharedPreferences 封装和通用 key
│ ├── extensions/ # BuildContext 扩展
│ ├── logging/ # 日志工具
│ ├── mixins/ # 通用 mixin
│ ├── network/ # Dio 封装、响应包装、异常处理
│ │ └── offline_queue/ # 拦截器、网络监听、离线请求队列
│ ├── permission/ # 权限请求封装
│ └── utils/ # 日期、表单校验、防抖节流、设备、URL 工具
├── shared/
│ └── widgets/ # 通用 UI 组件库
├── features/
│ └── demo/ # 模板能力演示页,可删除
└── main.dart # 入口
内置能力
- 网络层 — ApiClient (Dio) + ApiResponse + ApiException + 请求头拦截器
- 网络监听 — 基于 connectivity_plus 的实时状态追踪
- 离线队列 — 请求入队、持久化、网络恢复自动重放
- 本地缓存 — AppStorage 封装 SharedPreferences
- 状态管理 — Riverpod Provider 体系
- 主题系统 — Material 3 亮/暗双主题 + 屏幕适配
- UI 组件 — AppButton、AppTextField、AppCard、AppDialog、AppToast、AppEmptyView、AppErrorView、AppLoadingView、AppStatusView、AppAvatar、AppTag、AppSearchBar、AppRefreshList、AppNetworkImage、SafeAreaWrapper
- 工具类 — 日期格式化、表单校验、防抖节流、设备信息、URL 工具
- 工程配置 — flutter_lints、Android/iOS 平台工程
快速开始
cd record-tool
flutter pub get
flutter analyze
flutter test
flutter run
flutter run -d <device-id>
flutter build apk --debug
flutter build ios --debug --no-codesign
新业务接入指引
- 修改
lib/app/config/app_config.dart中的环境地址 - 在
lib/features/下新增业务模块 - 通过
core/network/providers/dio_providers.dart获取 ApiClient - 业务缓存 key 放在业务模块内,
core/cache/storage_keys.dart只放真正通用的 key - 删除
features/demo/或替换为业务首页