Flutter?Getx中的put和lazyPut函數(shù)使用案例解析
案發(fā)現(xiàn)場
在main.dart的runApp函數(shù)入口通過AppControllerBinding中的Get.lazyPut懶加載綁定了一個全局的controller,在A界面通過Get.find(),可以拿到這個controller,我退出A界面(還沒退出APP)controller就回調了onClose函數(shù),我再次進入商品列表界面
提示我:
"AppController" not found. You need to call "Get.put(AppController())" or "Get.lazyPut(()=>AppController())"
這個時候我很奇怪,既然是通過runApp入口綁定的全局的Controller,為什么在A界面第一次使用的時候可以獲取到,退出來就銷毀了,在進入A界面就直接報錯了呢?
這就要來細讀一下Getx中put和lazyPut這兩個函數(shù)以及他們的參數(shù)。
Get.put
Get.put<AppController>(AppController(),permanent: false);
核心是第二個參數(shù)permanent,默認是false
當為false的時候,當在A視圖中put,退出A視圖就會銷毀,當在B視圖在使用的時候,就會報錯
"AppController" not found. You need to call "Get.put(AppController())" or "Get.lazyPut(()=>AppController())"
當為true的時候,一旦put之后,就不會銷毀,其他視圖也可以繼續(xù)使用
Get.lazyPut
Get.lazyPut<AppController>(() => AppController(),fenix: true);
到了lazyPut函數(shù)又不一樣了,因為參數(shù)變成fenix了,并不是上面的permanent,而fenix的意思也有很大的區(qū)別。我們容易知道lazyPut是懶加載的,在那個視圖需要的時候,就在哪個視圖初始化,而fenix這個參數(shù)就比較重要。
fenix為false的時候:
第一次進入視圖的時候初始化,退出視圖的時候,銷毀,再次進入該視圖會報錯
"AppController" not found. You need to call "Get.put(AppController())" or "Get.lazyPut(()=>AppController())"
fenix為true的時候:
第一次進入視圖的時候初始化,退出視圖的時候,銷毀,再次進入該視圖重新初始化。
這就是案發(fā)現(xiàn)場的原因?。。。?!
以上就是Flutter Getx中的put和lazyPut函數(shù)使用案例解析的詳細內容,更多關于Flutter Getx函數(shù)put lazyPut的資料請關注腳本之家其它相關文章!
相關文章
Android實現(xiàn)完整游戲循環(huán)的方法
這篇文章主要介紹了Android實現(xiàn)完整游戲循環(huán)的方法,以實例代碼形式較為詳細的分析了Android游戲循環(huán)的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10
安卓應用開發(fā)通過java調用c++ jni的圖文使用方法
這篇文章主要介紹了2013-11-11

