一个能直接开工的 Flutter 项目模板
该Flutter项目解决了项目起步慢、代码边界混乱、跨端适配等问题,提供了路由、网络请求、Redux状态管理、组件库及天气、短视频、音乐、虎扑等业务模块,适合作为模板或参考工程。
很多 Flutter 项目不是难在写页面,而是难在起步。
路由怎么组织,接口怎么封装,状态放哪里,列表页的加载、空态、错误态怎么处理,组件怎么复用,Android、iOS、Web、Windows 怎么一起兼顾,这些问题如果每个项目都从零搭一遍,会浪费不少时间。这个项目就是为了解决这类重复工作:把常见移动应用会用到的基础能力先搭好,让开发者把时间放在业务本身。
它不是一个只有计数器页面的空壳模板,而是一个已经跑过多类真实场景的 Flutter 工程。项目里有路由、网络请求、Redux 状态管理、本地存储、媒体播放、组件库、天气、短视频、音乐、虎扑内容流、认证流程等模块,可以当模板,也可以当参考工程。
1. 解决什么问题
解决 Flutter 项目起步慢的问题
新项目最容易卡在基础架构上。比如:
- 页面路由怎么统一管理
- 接口请求放在哪里
- token、cookie、超时、日志怎么处理
- 全局状态怎么设计
- 页面之间怎么传参
- 本地缓存和偏好设置怎么存
- 多端构建版本怎么控制
- 常用 UI 组件要不要重新写
这个项目把这些常见问题先整理好。开发新功能时,不需要再从空项目开始拼路由、网络层和状态层,可以直接按现有目录继续扩展。
解决代码边界混乱的问题
Flutter 项目做大以后,常见问题是页面里什么都写:请求、解析、状态更新、UI 渲染、路由跳转全混在一起。短期能跑,后期很难改。
这个项目按比较清晰的边界拆分:
- lib/api/ 放接口声明
- lib/model/ 放业务模型
- lib/pages/ 放页面
- lib/components/ 放复用组件
- lib/store/ 放全局状态
- lib/router/ 放路由
- lib/utils/ 放基础设施和工具
这种结构让页面更薄,业务含义更清楚,也方便后面维护。
解决跨端适配和构建踩坑的问题
Flutter 本身支持多端,但真正落地时,Android Gradle Plugin、Kotlin、Gradle、Flutter SDK、插件版本之间经常互相影响。版本稍微不匹配,就可能遇到编译失败、插件接口不兼容、JDK class file 错误、下载超时等问题。
项目已经记录了当前能跑通的关键版本和构建配置,包括:
- Flutter SDK 版本
- Dart SDK 约束
- Android Gradle Plugin 版本
- Kotlin Gradle Plugin 版本
- Gradle Wrapper 版本
- Android SDK 路径示例
- 国内构建镜像配置
- iOS 真机安装注意事项
这对实际开发很有用,尤其适合 Windows 环境下做 Flutter Android 开发。
解决常用业务场景没有参考的问题
项目里不只有基础模板,还放了不少接近真实业务的页面:
- 天气页
- 短视频信息流
- 视频播放和播放历史
- 离线缓存
- 收藏管理
- 搜索
- 虎扑内容流
- NBA 赛程和比赛详情
- 音乐播放
- 用户认证流程
- 动态发布
- TodoList 状态流示例
- 俄罗斯方块小游戏
这些页面能直接展示一套完整业务从接口、模型、状态到 UI 的写法,比单独看文档更直观。
2. 特点和功能
路由能力完整
项目使用 fluro 管理路由,已经配置了首页、业务页、组件演示页、认证页、天气页、短视频页、虎扑页等入口。
支持的能力包括:
- 统一路由表
- 页面跳转
- 转场动画
- 参数传递
- 404 页面
- 页面返回值和回调场景示例
开发新页面时,可以直接在现有路由结构里增加入口,不需要重新设计导航方式。
网络请求集中管理
项目使用 dio 做网络请求,并把请求客户端集中放在 lib/utils/request.dart。
已有能力包括:
- 统一 baseUrl
- 请求超时配置
- 公共 headers
- cookie 管理
- token 注入
- 请求日志
- 多业务域名客户端
- 表单请求
- 查询参数拼接
- 错误记录
天气、短视频、虎扑、认证、音乐等接口都通过统一请求层发起,避免在页面里临时创建 Dio(),也避免不同模块各写一套请求逻辑。
状态管理清晰
项目使用 redux 和 flutter_redux 管理全局状态。
已有状态模块包括:
- 用户状态
- TodoList 状态
- 短视频状态
- 音乐播放状态
状态更新通过明确的 action 和 reducer 完成,适合处理跨页面共享数据,比如用户信息、播放状态、列表缓存等。
组件库丰富
项目里有一批可复用组件,并配套演示页面,适合快速搭业务页面。
已有组件包括:
- 按钮
- 弹窗
- Action Sheet
- Toast
- Notice Bar
- 输入框
- 密码输入
- 搜索框
- Picker
- Date Picker
- Calendar
- Checkbox
- Radio
- Switch
- Stepper
- Steps
- Tag
- Tab
- Sidebar
- Dropdown Menu
- Popover
- Swipe
- Swipe Cell
- 图片预览
- 网络图片
- 地区选择
- 文本省略
- 滚动数字
- 视频信息流
- 评论区
- 文章底部操作栏
这些组件偏 iOS 风格,减少 Material 味道,适合做更接近移动端原生体验的 Flutter 应用。
天气模块
天气模块包含城市搜索、实时天气、小时预报、多日预报、空气质量、生活指数、天气预警等内容。
相关结构比较完整:
- 天气接口在 lib/api/weather/
- 天气模型在 lib/model/weather/
- 天气页面在 lib/pages/weather/
- 天气图标组件在 lib/components/weather/
这个模块适合作为“接口数据到页面渲染”的参考。
短视频模块
短视频模块是项目里比较完整的业务场景之一。
已有功能包括:
- 短视频首页
- 推荐流
- 热点页
- 头条页
- 搜索页
- 搜索结果页
- 视频播放页
- 弹幕覆盖层
- 评论弹层
- 点赞动画
- 播放进度条
- 观看历史
- 收藏列表
- 离线缓存
- 频道管理
- 屏蔽管理
- 图集预览
- 文章详情
- 文章浏览历史
配套工具层也比较全,包括播放进度保存、观看历史保存、搜索历史保存、离线缓存保存、频道排序保存、收藏保存等。
音乐播放模块
项目包含 Oolaf 音乐相关能力,支持音乐列表、音频播放、缓存和收藏。
已有能力包括:
- 音频播放器封装
- 播放状态管理
- 音乐缓存
- 收藏管理
- Windows 音频支持
- 播放中状态组件
它适合参考 Flutter 里音频播放、本地缓存、多端播放兼容这些场景。
虎扑内容模块
虎扑模块覆盖内容流、搜索、帖子详情、用户详情、话题、NBA 赛程和比赛数据。
已有功能包括:
- 虎扑首页
- 登录页
- 搜索页
- 帖子详情
- 用户详情
- 话题详情
- NBA 赛程
- NBA 比赛详情
- 比分详情
- 热点新闻
- 关注、论坛、榜单等接口封装
这个模块更接近真实内容型 App,可以看到列表、详情、富文本、媒体块、评论、加载更多等组合场景。
认证流程完整
项目里有一组认证相关页面,覆盖常见账号流程:
- 启动门禁页
- 登录
- 注册
- 验证码
- 忘记密码
- 重置密码
- 修改密码
- 账号绑定
- 解绑
- 完善资料
- 权限说明
- 验证状态
- MFA
- 会话过期
- 账号安全
- 设备管理
- 注销账号
- 用户协议
- 隐私政策
- 第三方回调
- 异常页
这套流程适合直接作为账号系统页面骨架参考。
本地存储和缓存能力
项目使用 shared_preferences、path_provider、flutter_cache_manager 等处理本地数据。
已有本地能力包括:
- 用户认证信息保存
- Client API Key 保存
- 短视频观看历史
- 搜索历史
- 播放进度
- 收藏
- 离线缓存
- 屏蔽列表
- 频道排序
- 音乐收藏
- 音乐缓存
这些能力能覆盖大多数移动应用常见的轻量本地状态。
多媒体能力扎实
项目引入了 media_kit、media_kit_video、just_audio、just_audio_windows 等依赖,支持视频和音频播放。
适用场景包括:
- 短视频播放
- 视频控制器管理
- 播放进度追踪
- 视频缓存
- 音频播放
- Windows 音频播放
- 音乐缓存代理
对需要做视频流、音乐播放或媒体缓存的项目,这部分很有参考价值。
开发工具和错误记录
项目在 main.dart 里接入了 Flutter 错误和平台错误捕获,并记录到开发工具中心。
已有处理包括:
- FlutterError.onError
- PlatformDispatcher.instance.onError
- runZonedGuarded
- 开发工具中心错误记录
这让运行期问题更容易定位,不会只有控制台一闪而过的异常。
UI 风格偏 iOS
项目业务 UI 优先使用 Cupertino 组件,整体方向更接近 iOS,而不是默认 Android Material 风格。
适合需要这种视觉方向的应用:
- 轻量
- 清爽
- 弹层自然
- 交互接近 iOS
- 组件状态明确
- 页面层次清楚
这对 Flutter 项目很重要,因为默认 Material 风格虽然方便,但很多国内移动端产品并不希望一眼看起来像 Android 原生模板。
平台覆盖广
项目声明支持:
- Android
- iOS
- Web
- Windows
- macOS
- Linux
目前 README 里重点记录了 Windows 环境下 Android 模拟器验证,以及 iOS 自用真机安装配置。对需要多端尝试的项目来说,这个基础比纯移动端模板更有弹性。
暂无评论
确认评论邮箱
邀请制评论