基於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.