一尘不染

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

flutter

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


阅读 269

收藏
2020-08-13

共1个答案

一尘不染

当您的build方法需要等待a时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或将多个FutureBuilders 嵌套在一起。

2020-08-13