You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

具备Flutter基础的开发者进阶项目推荐请求(含Riverpod/Bloc等)

进阶Flutter练习项目推荐

1. GitHub仓库浏览应用

适合从基础API交互过渡到复杂状态管理,覆盖所有目标技术点

  • 核心功能:
    • 搜索GitHub用户,展示用户基本信息
    • 查看用户的公开仓库列表,支持按星数排序
    • 仓库详情页展示README、语言占比等信息
    • 收藏/取消收藏仓库,本地存储收藏列表
  • 技术点落地:
    • HTTP网络请求:用http或dio封装统一的API服务类,处理请求头、错误拦截(比如404用户不存在、网络超时),并将JSON响应解析为实体类
    • 状态管理:
      • 选Riverpod:用StateNotifierProvider管理搜索状态(加载/成功/失败)、仓库列表状态;用Provider提供API服务实例
      • 选Bloc:拆分SearchBloc处理用户搜索逻辑,RepoBloc处理仓库列表和收藏操作,通过Event触发状态变更
    • 依赖注入:用get_it注册API服务、本地存储服务、数据仓库(Repository),实现业务逻辑与数据层解耦;或者直接用Riverpod的Provider注入依赖,无需额外包
    • RxDart:用BehaviorSubject处理搜索输入流,添加debounceTime(500ms)实现输入防抖,避免频繁发起API请求;用map、filter操作符过滤无效搜索关键词(比如空字符串)

2. 多城市天气预报应用

侧重异步状态处理和数据流整合,适合练习RxDart的操作符

  • 核心功能:
    • 自动定位获取当前城市实时天气
    • 手动搜索全球城市,查看未来7天预报
    • 天气卡片支持下拉刷新,展示温度、湿度、风力等数据
    • 收藏常用城市,快速切换查看
  • 技术点落地:
    • HTTP网络请求:调用公开天气API,封装请求参数(比如城市ID、API密钥),处理响应的不同状态(比如请求成功、权限不足、城市未找到)
    • 状态管理:
      • 选Riverpod:用AsyncNotifier处理异步定位和天气请求,自动管理加载/成功/失败状态;用FamilyProvider根据城市ID获取对应天气数据
      • 选Bloc:用WeatherCubit管理天气数据状态,LocationCubit处理定位逻辑,通过State传递不同状态信息
    • 依赖注入:注册天气API服务、定位服务、本地存储服务,通过依赖注入替换不同环境的实现(比如开发环境用模拟数据,生产用真实API)
    • RxDart:用Observable监听定位服务的位置更新流,结合distinctUntilChanged避免重复请求;用combineLatest合并实时天气和7天预报数据,统一更新UI

3. 分类Todo管理应用(进阶版)

通过复杂业务逻辑强化状态管理和依赖注入的实践

  • 核心功能:
    • 增删改查Todo,支持设置优先级(高/中/低)和分类(工作/生活/学习)
    • 按分类、优先级筛选Todo,支持批量操作(批量完成/删除)
    • 本地存储Todo数据,支持云端同步(可模拟API或搭建简单后端)
    • 统计不同分类的Todo完成率,实时展示
  • 技术点落地:
    • HTTP网络请求:实现Todo的云端同步接口(POST新增、GET列表、PUT更新、DELETE删除),处理离线缓存和同步冲突(比如本地修改与云端数据不一致)
    • 状态管理:
      • 选Riverpod:用StateNotifierProvider管理全局Todo列表状态,用Provider.family根据筛选条件返回过滤后的Todo列表
      • 选Bloc:拆分TodoBloc处理Todo的增删改查事件,FilterBloc处理筛选逻辑,通过Event触发状态变更
    • 依赖注入:注册本地存储服务(比如hive)、云端API服务、Todo数据仓库,实现业务逻辑与数据存储层的解耦,方便单元测试
    • RxDart:用PublishSubject监听Todo的变更事件,触发本地存储和云端同步;用scan操作符统计不同分类的Todo完成数量,实时更新底部统计栏

额外实践建议

  • 先选定一种状态管理框架(比如先练Riverpod,再用Bloc重写同一项目),对比两种方案的差异
  • RxDart从简单操作符(debounceTime、map)入手,逐步尝试复杂操作符(combineLatest、scan)
  • 依赖注入遵循单一职责原则,避免过度注入,优先用框架自带的注入能力(比如Riverpod)减少第三方包依赖

内容的提问来源于stack exchange,提问作者holparb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 01:52:26