鑑於Flutter shared_prefs插件的異步性質,如何確保在啓動應用程序時立即顯示正確的主題設置?即一旦shared_prefs加載完成,就不會使用默認主題的閃存,然後應用正確的主題。立即在Flutter應用程序中顯示應用程序主題
2
A
回答
4
當您build
方法需要等待Future
,它打破了FutureBuilder
的好時機。
void main() {
runApp(new FutureBuilder(
future: SharedPreferences.getInstance(),
builder: (_, snapshot) {
return snapshot.hasData ?
new MyApp(preferences: snapshot.data) :
new LoadingScreen();
},
));
}
建立這種模式的應用程序的一些技巧:
SharedPreferences.getInstance()
是相當快的。您的應用可能會看起來更好,將空的Container
作爲黑色加載屏幕,而不是閃爍的彩色內容。但是,如果您同時加載其他內容,則顯示您的徽標更有意義。如果您需要等待多個期貨,您可以使用 Future.wait或嵌套多個
FutureBuilder
s在一起。
2
一種方法是延遲加載屏幕顯示您的主應用程序。我見過一個模式是:
main() async {
runApp(new LoadingScreen());
runApp(new App(await asyncStuff()));
}
您可以經常爲你喜歡叫runApp:https://docs.flutter.io/flutter/widgets/runApp.html
0
你也可以使用一個StatefulWidget
與setState
應用程序配置完成後更新根部件。調用的setState前
mainWidget = loadingWidget();
someMethodThatDoesAppConfig().then((Widget configuredWidget) {
setState(() {
_mainWidget = configuredWidget;
});
});
相關問題
- 1. 在Android中的主應用程序內安裝多個應用程序,並只顯示主應用程序
- 2. 安裝後Windows應用程序不能立即在應用程序中使用?
- 3. 主應用程序 - 在應用程序的右側顯示主視圖
- 4. Flutter應用程序中的Oauth2流
- 5. 應用程序凍結,然後立即顯示所有內容
- 6. GUI應用程序顯示然後立即退出
- 7. Flutter應用程序中顯示圖像和用戶反應的準確時間
- 8. Android應用程序未在「所有應用程序」中顯示
- 9. Iphone應用程序未顯示在iPad應用程序中心
- 10. 在獨立的PHP Web應用程序中使用Drupal主題
- 11. 主題外應用程序
- 12. 主題iphone應用程序
- 13. 主題android應用程序
- 14. 應用程序主題
- 15. iPhone應用程序主題
- 16. 未顯示主應用程序面板
- 17. iOS應用程序立即崩潰
- 18. AsyncTask立即崩潰應用程序
- 19. 立即暫停應用程序執行
- 20. 防止應用程序立即退出?
- 21. 立即退出C++應用程序?
- 22. Android Studio立即終止應用程序
- 23. Android應用程序立即崩潰
- 24. 關閉安卓程序立即在json運行應用程序
- 25. 當使用push segue時,主應用程序會立即崩潰
- 26. Material flutter應用程序源代碼
- 27. 意圖當應用程序在後臺時立即打開應用程序-Android
- 28. 在Windows應用程序中建立聊天應用程序XAML
- 29. Java小應用程序顯示問題
- 30. iPhone應用程序顯示
當您在異步回調的時候,你應該檢查(裝):
您可以使用類似(簡稱):
在結合以確保您的小部件尚未被處置。否則,Flutter會斷言。 FutureBuilder自動爲你做這件事。在這種特殊情況下,它可能沒有問題,因爲StatefulWidget接近應用程序的根目錄,不太可能被卸載,但在構建可組合的小部件時,這是一個很好的習慣。 –