在Flutter app中立即显示应用主题

Fra*_*per 7 flutter

鉴于Flutter shared_prefs插件的异步特性,如何确保在启动应用程序时立即显示正确的主题设置?也就是说,一旦shared_prefs加载完成后,没有默认主题的闪存,然后应用正确的主题.

Col*_*son 9

当你的build方法需要等待a时Future,现在是爆发的好时机FutureBuilder.

void main() {
  runApp(new FutureBuilder(
    future: SharedPreferences.getInstance(),
    builder: (_, snapshot) {
      return snapshot.hasData ?
             new MyApp(preferences: snapshot.data) :
             new LoadingScreen(); 
    },
  ));
}
Run Code Online (Sandbox Code Playgroud)

使用此模式构建应用程序的一些提示:

  • SharedPreferences.getInstance()非常快.你可以用一个空Container的黑色加载屏幕而不是彩色内容的闪光看起来更好看.但是,如果您同时加载其他内容,则显示您的徽标会更有意义.

  • 如果需要等待多个期货,可以使用 Future.wait或将多个FutureBuilders 嵌套在一起.


Eri*_*del 7

一种方法是使用加载屏幕延迟主应用程序的显示.我见过的模式是:

main() async {
  runApp(new LoadingScreen());
  runApp(new App(await asyncStuff()));
}
Run Code Online (Sandbox Code Playgroud)

您可以根据需要随时调用runApp:https://docs.flutter.io/flutter/widgets/runApp.html