在默認情況下頁面切換走時會被銷毀,頁面切換回來時會被重新創(chuàng)建,如果頁面中有列表那么整個列表將會被重新創(chuàng)建,降低了用戶體驗,下面是解決這個問題的幾種處理方式
成都創(chuàng)新互聯(lián)公司于2013年開始,先為蕉城等服務建站,蕉城等地企業(yè),進行企業(yè)商務咨詢服務。為蕉城企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
didChangeAppLifecycleState App生命周期發(fā)生變化
AppLifecycleState.inactive - AppLifecycleState.paused
AppLifecycleState.inactive - AppLifecycleState.resumed - build
StatelessWidget 的生命周期只有一個,就是 build
build 是用來創(chuàng)建 Widget 的,但 因為 build 在每次界面刷新的時候都會調(diào)用,所以不要在 build 里寫業(yè)務邏輯,可以把業(yè)務邏輯寫到你的 StatelessWidget 的構造函數(shù)里 。
因此生命周期很簡單
依次為
這個方法在一幀的最后調(diào)用,并且只調(diào)用一次,使用這個方法就可以在判斷渲染完成,并獲取到元素的大小。
Flutter狀態(tài)管理系列:
Flutter狀態(tài)管理(一):ScopedModel
Flutter狀態(tài)管理(二):Provider
Flutter狀態(tài)管理(三):BLoC(Business Logic Component)
Flutter狀態(tài)管理(四):ReactiveX之RxDart
Flutter狀態(tài)管理(五):Redux
有做過H5前端開發(fā)的朋友應該很早就接觸過這個,Redux在React/VUE中,與在Flutter/Dart中概念一樣,沒有任何區(qū)別;唯一的區(qū)別只是使用上的不同。
它主要由三部分組成:
下圖是一個完整的數(shù)據(jù)觸發(fā)及更新流程:
我們看到上面整個數(shù)據(jù)流,都是單向的,由View發(fā)起,最后到View的更新;
為啥這樣設計?
小節(jié)二介紹了Redux最基本的原理,但是,如何用Redux來做一些異步操作,比如:加載數(shù)據(jù)、請求API等?這里就引出來了Redux的中間件(Middleware),中間件能夠讓我們使得action在到達reducer之前,做些其它“動作”!有了中間件,我們不但可以請求API,還可以改變action,使得分發(fā)到其它reducer中去;
上圖是有Middleware的流程圖。
Redux在Flutter中的使用與在JavaScript中的使用方式稍微有點不同,為啥?
因為JavaScript是弱類型語言,而Dart是強類型語言,這就使得在JS中每個reducer可以獨立管理,而在Flutter中需要由一個大對象來管理!
無論在JS中還是在Flutter中,通常都將action、reducer、store各自建一目錄,放在redux目錄下,目錄結構如下:
ReduxPage在build中,也可以直接用StoreBuilder(參考ReduxPage2中寫法),因為StoreBuilder也是InheritedWidget。
正因為Redux在Flutter中與在JS中不同,因此,在Flutter中,建議:
一、前言
Flutter開發(fā),就需要對各種狀態(tài)的管理,就是在請求數(shù)據(jù)的時候需要實時變化,各種交互變化等,在沒有使用GetX之前使用Provider,用Provider的時候覺得真香,挺方便的,需要刷新的時候直接 notifyListeners(); 用了GetX之后覺得Provider太繁瑣了。這邊介紹下GetX的使用以及常用的方法。
二、 GetX
GetX 是 Flutter 上的一個輕量且強大的解決方案:高性能的狀態(tài)管理、智能的依賴注入和便捷的路由管理。
1、相關優(yōu)勢:
三、使用
1、第一步 引入get
2、第二步
修改入口、配置路由
3、路由
Routes類
Pages類
4、狀態(tài)管理
我一般一個page對應一個controller, controller來處理邏輯,控制page.
簡單使用
5、依賴注入
依賴注入也是我喜歡的,可以減少很多工作。
第一步
第二步
6、跨頁面交互
7、黑暗模式
可以參考前期寫的博客。 黑暗模式的適配
我覺得如果想要實現(xiàn)退出app之后再進入app中來保持登錄的狀態(tài)的話,就必須要不斷地保持自己的聯(lián)網(wǎng)。
Flutter (二)布局
Flutter (三) 狀態(tài)管理
Flutter (四) Map轉模型
Flutter (五) 網(wǎng)絡請求
Flutter (六) 保留界面狀態(tài)
Flutter (七) 混合開發(fā) [配置]
Flutter (八) 混合開發(fā) [Flutter完整項目嵌入到原生]