Flutter天气应用示例
一个使用 OpenWeatherMap API 的 Flutter 天气应用示例。
相关教程
支持的功能
- 当前天气(状况和温度)
- 5天天气预报
应用架构
该应用由两个主要层组成。
数据层
数据层包含一个用于从 OpenWeatherMap API 获取天气数据的单一天气存储库。
然后,数据会被解析(使用 Freezed)并使用**类型安全**的实体类(Weather 和 Forecast)返回。
有关此内容的更多信息,请阅读本教程
表示层
此层包含所有小部件及其控制器。
小部件不直接与存储库通信。
相反,它们会监视一些扩展了 StateNotifier 类的控制器(使用 Riverpod)。
这允许将上一层的数据映射到 AsyncValue 对象,这些对象可以映射到适当的 UI 状态(数据、加载、错误)。
使用的软件包
- 用于状态管理的 riverpod
- 用于代码生成的 freezed
- 用于与 REST API 通信的 http
- 用于缓存图片的 cached_network_image
- 用于测试的 mocktail
关于 OpenStreetMap 天气 API
该应用显示来自以下端点的数据
注意:要使用该 API,您需要注册一个账户并获取您自己的 API 密钥。这可以通过 --dart-define 设置,或者在 lib/src/api/api_keys.dart 中设置。
