鉴于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. 安装后Windows应用程序不能立即在应用程序中使用?
- 2. Flutter应用程序中的Oauth2流
- 3. 应用程序冻结,然后立即显示所有内容
- 4. GUI应用程序显示然后立即退出
- 5. Android应用程序未在“所有应用程序”中显示
- 6. Iphone应用程序未显示在iPad应用程序中心
- 7. 在独立的PHP Web应用程序中使用Drupal主题
- 8. Flutter应用程序中显示图像和用户反应的准确时间
- 9. 应用程序主题
- 10. 主题android应用程序
- 11. iPhone应用程序主题
- 12. 主题外应用程序
- 13. 主题iphone应用程序
- 14. Android Studio立即终止应用程序
- 15. 防止应用程序立即退出?
- 16. Android应用程序立即崩溃
- 17. 立即暂停应用程序执行
- 18. 意图当应用程序在后台时立即打开应用程序-Android
- 19. Material flutter应用程序源代码
- 20. Java小应用程序显示问题
- 21. 应用程序不显示
- 22. 优化C#安装程序以立即安装应用程序
- 23. 在播放应用程序中运行主应用程序
- 24. 在Flex应用程序中显示HTML
- 25. 在NSStatusItem应用程序中显示NSOpenPanel
- 26. 在Web应用程序中显示PDF
- 27. 在应用程序中显示活动
- 28. 在iPhone应用程序中显示HTML
- 29. 在wpf应用程序中显示busyindicator
- 30. 应用程序加载后立即启动音频Android应用程序
当您在异步回调的时候,你应该检查(装):
您可以使用类似(简称):
在结合以确保您的小部件尚未被处置。否则,Flutter会断言。 FutureBuilder自动为你做这件事。在这种特殊情况下,它可能没有问题,因为StatefulWidget接近应用程序的根目录,不太可能被卸载,但在构建可组合的小部件时,这是一个很好的习惯。 –