基于Google的Flutter,及官方推荐状态管理Provider和玩Android开放的API,打造的一款产品级开源App《Fun Android》android
Logo的里F,既表明了
Fun
也表明了Flutter
.ios
![]() |
![]() |
![]() |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
蒲公英下载页github
Flutter SDK (Channel dev, v1.10.4)web
若是要查看运行效果,必定要使用Release模式,流畅程度差距很是大express
Flutter的
Debug
和Release
的编译模式不一样,下分别是JIT
和AOT
.Debug
模式支持hot reload
.apache
iOS运行在splash页面卡住,须要检查当前的scheme,若是为release
,需在命令行执行flutter build ios
微信
项目国际化部分依赖了AndroidStudio的插件flutter_i18n 须要在plugin仓库中,搜索Flutter i18n
.安装插件成功后,重启AndroidStudio后,会生成lib/generated/i18n.dart
文件网络
具体方案和使用参考掘金-rhyme_lphlv的博文app
借用群里水友的两句对白,在预览版出来时候
1A:话说玩Android
的开源项目已经多如牛毛了。
3C:我想看最漂亮的。
感谢这位朋友对Fun Android
的承认。
关于App的主题风格,不全是Google倡导的Material Design 也不全是Apple的Cupertino Style。因为我是一个Android开发者,但又长期使用的iPhone,因此App的风格是二者的结合又夹杂了点私货。我的认为iOS版本的确实好看点。
代码中存在的问题,请你们积极提Issue.
2019-10-21
(未发布)2019-10-17
2019-10-16
2019-10-14
2019-10-13
2019-09-23
2019-09-20
2019-09-19
个人
页面莫名卡死的问题2019-09-18
官方在1.10.1版本已修复
更新收藏动画的实现方式,以前实现的方式侵入性太强,每一个页面都要先隐藏一个小❤❤。如今换了路由➕Hero的思路,从新调整了Flare。显示动画一行代码就ok。(若是你运行代码以后发现,该动画与图上会有一丝丝不一致,列表项右下角的当心会闪一下.不用担忧那是flutter的bug,目前在master分支已经修复.见pr-37341)
![]() |
![]() |
---|---|
玩Android
首页列表页面
以上是Provider结合ViewModel的基础使用方式,考虑了App中会出现的比较全面的状况,但愿你们一块儿探讨使用方式
另外在判断页面状态的时候,其实拿
model.viewState == ViewState.busy
会更严谨一点.为了书写方便,加了一个对应方法
Provider状态管理的最佳实践,虽然Google很早就废弃了Provide
,宣布Provider
为推荐的状态管理工具,但是在开发中,咱们老是会遇到不少问题。
好比Provider
的几个衍生类在具体的业务中应该怎么使用?
页面最初须要的数据何时进行初始化,在哪里初始化。
如何将页面的几个经常使用状态loading
、error
、empty
、idle
、unAuthorized
进行组合使用。
经常使用的下拉刷新
,上拉加载更多
应如何服用才能效果更佳。
Widget在dispose后,model
再也不notify()。
清晰的代码结构。
view_model
中,Widget只关注页面自己。不要再满屏幕的setState()。
同一页面内能够利用Flutter框架给咱们提供的各类XxxBuilder,来局部刷新。
多层嵌套可以使用前边提到的Provider
。
固然颗粒度足够细的Widget,仍是要使用setState()。eg: ChangeLogPage中的ChangeLogView 功能单一,刷新不会影响别的widget。
实现了App的基础功能,可copy看成模板代码快速开发
主题切换
夜间模式切换
字体切换
漂亮的骨架屏
利用IDE
插件i18n
进行国际化
Dio结合Cookjar,实现玩Android
的登陆功能
AnimationList结合SmartRefresh的常规数据加载
固然还有WanAndroid自己也有不错的内容,每日闲暇时,能够读一读。
首页二楼目前是我我的的blog,也没法前进后退。后期会放一个flutter专题。
Hero动画,在非最后一个tab登录时,logo的动画会漂移到最后一个,须要加状态判断。
退出登录加入动效。
webview_flutter 插件的问题仍是不少,有些连接点击会没有反应,不会跳转。因此接入了两套WebView方案
webview_flutter 不能结合CustomScrollView
滑动。见issue 。
两个一样颜色的widget,中间莫名其妙的会多一条背景色的线。见issue 。
感谢 V2Lf 开源项目,很早就在TestFlight中下载了该App,那时还没开源。萌生了想作一个开源的App的想法。
借鉴了goweii
WanAndroid项目的UI,最美原生版WanAndroid,感谢。
在实践Provider时,发现了Tutorials,做者Youtube的教程很好。
感谢优秀的pull_to_refresh刷新库。
感谢站酷提供的开源的字体。
感谢WanAndroid提供的API。
Copyright 2019 phoenixsky
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.