![SimplicityWeather](https://socialify.git.ci/xiaweizi/SimplicityWeather/image?description=1&font=Inter&forks=1&logo=https%3A%2F%2Favatars2.githubusercontent.com%2Fu%2F18526994%3Fs%3D460%26u%3Dfafc0ba23c151498268487e2244b57ab042b729a%26v%3D4&owner=1&pattern=Circuit%20Board&stargazers=1&theme=Light)
# 简悦天气
*简约不简单,丰富不复杂*
一款简约风格的 flutter 天气项目,提供实时、多日、24 小时、台风路径以及生活指数等服务,支持定位、删除、搜索,语音播报等操作。
作为 flutter 实战项目,包含状态管理、网络请求、数据缓存、自定义 view、自定义动画,三方统计,事件管理等技术点,实用且丰富。
如果图片看不到,请前往 [『Flutter』一款风格简约功能丰富的天气](http://xiaweizi.cn/article/f7f8/)
### 体验
点击[下载链接](http://xiaweizi.top/SimplicityWeather-2_6.apk)下载
或者直接扫描二维码抢先体验
![第三组](/images/qrcode.png)
### 功能介绍
目前已支持的功能如下
- [x] 自动定位
- [x] 添加&删除城市
- [x] 实时信息
- [x] 24小时&多日预报
- [x] 丰富的生活指数
- [x] 台风路径
- [x] 背景高斯模糊
- [x] 动态降雨卡片
- [x] 自动更新
- [x] 丰富多样的天气背景效果(雷暴效果)
- [x] 自动升级
- [x] 语音播报
- [x] **一键换天**,做天气之子
接下来多图警告
![第一组](/images/weather1.png)
![第二组](/images/weather2.png)
![第三组](/images/weather3.png)
#### 一键换天
天气背景效果分为三层:
- 背景颜色层。从上到下的渐变效果
- 云层。只有一种图片,对其位移、数量、染色做不同变化达到不同效果
- 雨雪层。为雨雪天气单独做了动画,很炫酷。
目前支持多达 **12** 种不同的天气类型,其中包括:晴、多云、阴天、小中大雨、小中大雪、雾、霾、浮尘,为了更好,在关于页面有上角添加切换天气类型的入口,实时查看不同气象下不同的背景效果。下面用一种 GIF 图展示效果,鉴于 GIF 本身的局限,可能会模糊低帧,请下载 apk 自行体验。
![home](/images/home.gif)
![page](/images/page.gif)
![list](/images/list.gif)
![grid](/images/grid.gif)
![check](/images/check.gif)
### 技术介绍
虽然这个项目简单,但是涵盖的 flutter 技术点却不少,可以满足日常开发小项目的需求。
其实从入门 flutter 到完成这个项目,也只是花了两个周末,加上平时下班的时间,代码写的略微有点仓促,很多可以封装,和一些绘制的逻辑还有很大的优化空间,后面抽时间进行优化一波。
大致整理一下其技术点:
- 网络请求&数据缓存
- 高德 SDK 以及自动定位
- 自定义 View,动画以及 widget
- 三方统计接入,插件接入
- 状态管理,数据同页面以及跨页面传输
- 屏幕适配,公共组件封装
这里特地把自自定义 View &动画拉出来说说,从项目可以看到很多的图表,包括空气质量&湿度比例圆弧图,日出日落弧线图,以及24小时&多日折线图。其实绘制原理跟 Android 的绘制很像,包括接口的设计也异曲同工。同样有 canvas 画布和 paint 画笔,这样写起来就方便很多。
有了 Android 绘制基础,写起来就非常快了,这几个图加在一起一共不到一天的时间就可以完成。无非是先装载好数据,根据获取到的数据进行绘制。后面有时间会单独介绍一下这这块的绘制逻辑。
### 三方库依赖
Fluter 为什么目前这么火热,以及开发的效率如此之高,除了因为 Google 这个大佬作为靠山,更多的还是活跃的开源社区,[pub.dev](https://pub.flutter-io.cn/) 上提供了很多稳定而又多样的插件,省去不必要的开发时间,根据自己的实际情况进行选择,结合 Mac 上 Alfred 工具,搜索起来得心应手。
同样,简悦天气项目中也引用不少依赖插件,特此进行说明和感谢。
| 插件名称 | 插件说明 |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| [flutter_weather_bg](https://pub.flutter-io.cn/packages/flutter_weather_bg) | 本人开发的炫酷的天气动态背景 |
| [flutter_bloc](https://pub.flutter-io.cn/packages/flutter_bloc) | 不多说,很强大,作为新手再也不用担心数据共享与更新 |
| [shared_preferences](https://pub.flutter-io.cn/packages/shared_preferences) | 很常用,持久化保存数据 |
| [dio](https://pub.flutter-io.cn/packages/dio) | 网络请求当然离不开一个好的网络框架,项目只是用到了基础的 GET 请求 |
| [amap_location_fluttify](https://pub.flutter-io.cn/packages/amap_location_fluttify) | 高德定位插件,虽然有坑,但是满足基础需求 |
| [location_permissions](https://pub.flutter-io.cn/packages/location_permissions) | 定位权限判断已经申请插件 |
| [event_bus](https://pub.flutter-io.cn/packages/event_bus) | 事件更新 |
| [flutter_slidable](https://pub.flutter-io.cn/packages/flutter_slidable) | 强大的侧滑插件 |
| [umeng_analytics_plugin](https://pub.flutter-io.cn/packages/umeng_analytics_plugin) | 友盟统计插件 |
| [flutter_screenutil](https://pub.flutter-io.cn/packages/flutter_screenutil) | 屏幕适配工具插件 |
| [modal_bottom_sheet](https://pub.flutter-io.cn/packages/modal_bottom_sheet) | 底部弹窗 |
| [path_drawing](https://pub.flutter-io.cn/packages/path_drawing) | 绘制虚线 path 用到 |
| [url_launcher](https://pub.flutter-io.cn/packages/url_launcher) | 通用跳转工具 |
| [package_info](https://pub.flutter-io.cn/packages/package_info) | 获取包相关信息 |
| [ota_update](https://pub.flutter-io.cn/packages/ota_update) | apk 自动升级 |
| [flutter_tts](https://pub.flutter-io.cn/packages/flutter_tts) | 语音播报 |
### 总结
对 Flutter 两周的学习和开发下来后的感受,代码写起来是真快,在 Android 如果想实现,点击按钮并更新 TextView 的逻辑,首先创建 xml 布局,其次 java 代码中初始化 View 并给 button 添加点击事件,然后,还需要有单独的变量保存状态的更新,最后在变量发生变化时更新 TextView 的值。
而 Flutter 的核心就是 widget,很多功能都封装在 widget 中,在 Flutter 中如果想实现该功能,只需创建两个 widget,在相应 click 事件时只需关系变量值改变,调用 setState,后续的 View 更新可以完全不用管,有点类似 Android 的 databinding。
不过,由于全部都是 widget,你会发现如果把所有页面写在一个文件,那么嵌套的画面绝对会让你崩溃。这就需要,对功能进行拆解,尽量做到逻辑最小化,代码阅读性和维护性也会很高。还有就是插件,虽然社区的插件已经相当丰富,但还是有些需求没有找到合适的插件,这就需要广大开发者,积极燃烧开源热血,为社区贡献自己的成果。
总的来说,开发效率上确实提高不少,因为入坑时间短,原理和性能上没有细致研究,所以可能导致看法�
没有合适的资源?快使用搜索试试~ 我知道了~
一款简约风格的 flutter 天气项目提供实时多日24 小时台风路径以及生活指数等服务支持定位删除搜索等操作
共237个文件
dart:74个
png:65个
kt:28个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 53 浏览量
2024-04-15
14:55:19
上传
评论
收藏 33.58MB ZIP 举报
温馨提示
一款简约风格的 flutter 天气项目,提供实时、多日、24 小时、台风路径以及生活指数等服务,支持定位、删除、搜索等操作。简约不简单,丰富不复杂。一款简约风格的 flutter 天气项目,提供实时、多日、24 小时、台风路径以及生活指数等服务,支持定位、删除、搜索,语音播报等操作。作为 flutter 实战项目,包含状态管理、网络请求、数据缓存、自定义 view、自定义动画,三方统计,事件管理等技术点,实用且丰富。如果图片看不到,请前往 『Flutter』一款风格简约功能丰富的天气。 自动定位添加&删除城市 实时信息24小时&多日预报丰富的生活指数台风路径背景高斯模糊动态降雨卡片自动更新丰富多样的天气背景效果(雷暴效果)自动升级语音播报一键换天,做天气之子。这款简约风格的Flutter天气应用项目旨在提供用户便捷且全面的天气信息服务。通过实时、多日、24小时天气预报、台风路径跟踪以及生活指数等功能,用户可以轻松获取所需的天气信息。同时,支持定位、城市添加与删除、搜索功能,以及语音播报等操作,为用户带来更便捷的体验。此应用项目还涵盖了状态管理、网络请求、数据缓存、自定义视图、自定义动
资源推荐
资源详情
资源评论
收起资源包目录
一款简约风格的 flutter 天气项目提供实时多日24 小时台风路径以及生活指数等服务支持定位删除搜索等操作 (237个子文件)
last-build.bin 1B
weather_model_entity_helper.dart 48KB
json_convert_content.dart 31KB
manager_page.dart 14KB
about_page.dart 13KB
weather_model_entity.dart 11KB
day_forecast_detail.dart 9KB
hour_forecast.dart 9KB
search_page.dart 9KB
life_index.dart 8KB
city_view.dart 8KB
weather_type.dart 8KB
ota_dialog.dart 7KB
test.dart 7KB
city_bloc.dart 6KB
rain_detail.dart 6KB
day_forecast.dart 6KB
real_time.dart 6KB
router_utils.dart 6KB
home_page.dart 5KB
search_app_bar.dart 5KB
hot_city_view.dart 4KB
real_time_temp.dart 4KB
sun_rise_set.dart 4KB
main.dart 4KB
main_app_bar.dart 4KB
weather_main_bg.dart 4KB
search_list_view.dart 3KB
aqi_chart.dart 3KB
real_time_detail.dart 3KB
anim_view.dart 3KB
router.dart 3KB
wave_view.dart 3KB
grid_view.dart 3KB
weather_bloc.dart 3KB
main_message.dart 3KB
district_model_entity_helper.dart 3KB
ota_utils.dart 3KB
list_view.dart 2KB
loading_view.dart 2KB
time_util.dart 2KB
net_manager.dart 2KB
shared_preference_util.dart 2KB
flutter_app.dart 2KB
color_utils.dart 2KB
city_model_entity.dart 2KB
weather_api.dart 2KB
speak_anim.dart 2KB
blur_rect.dart 1KB
page_view.dart 1KB
loading_dialog.dart 1KB
widget_test.dart 1KB
response_interceptor.dart 1KB
toast.dart 963B
code.dart 770B
bloc_wrapper.dart 748B
weather_state.dart 669B
city_event.dart 648B
district_model_entity.dart 621B
analytics_constant.dart 614B
change_index_envent.dart 599B
json_field.dart 562B
ui_utils.dart 525B
city_state.dart 518B
city_data.dart 492B
location_util.dart 423B
dimen_constant.dart 395B
image_utils.dart 386B
print_utils.dart 365B
weather_event.dart 290B
rep_result.dart 255B
common_extension.dart 249B
main.dart 236B
string_constant.dart 65B
widget_state.dart 52B
list.gif 4.84MB
grid.gif 4.64MB
page.gif 3.54MB
home.gif 1.55MB
check.gif 1.47MB
.gitignore 722B
.gitignore 542B
.gitignore 262B
build.gradle 3KB
build.gradle 704B
settings.gradle 462B
Runner-Bridging-Header.h 38B
AMap3DMap_7.7.0_AMapSearch_7.7.0_20201027.jar 2.7MB
Contents.json 3KB
Contents.json 391B
Contents.json 62B
MinuteFragment.kt 15KB
MinuteLayout.kt 11KB
MinuteChartView.kt 7KB
MinuteViewModel.kt 6KB
BigWidgetProvider.kt 5KB
RealtimeResponse.kt 4KB
MinuteProgressView.kt 3KB
AmapLocationMarkerView.kt 2KB
BaseFragment.kt 2KB
共 237 条
- 1
- 2
- 3
资源评论
传奇开心果编程
- 粉丝: 1w+
- 资源: 454
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 计算机毕业设计:python+爬虫+cnki网站爬
- nyakumi-lewd-snack-3-4k_720p.7z.002
- 现在微信小程序能用的mqtt.min.js
- 基于MPC的非线性摆锤系统轨迹跟踪控制matlab仿真,包括程序中文注释,仿真操作步骤
- 基于MATLAB的ITS信道模型数值模拟仿真,包括程序中文注释,仿真操作步骤
- 基于Java、JavaScript、CSS的电子产品商城设计与实现源码
- 基于Vue 2的zjc项目设计源码,适用于赶项目需求
- 基于跨语言统一的C++头文件设计源码开发方案
- 基于MindSpore 1.3的T-GCNTemporal Graph Convolutional Network设计源码
- 基于Java的贝塞尔曲线绘制酷炫轮廓背景设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功