仅在设备上诊断Flutter MaterialApp主题运行时更改为何缓慢的原因

时间:2019-02-04 23:45:52

标签: dart flutter

我将SharedPreferences服务类包装在实现PreferencesProvider.of(context)的提供程序类中。它的主题设置如下:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: PreferencesProvider.of(context).service.isDark,
      initialData: PreferencesProvider.of(context).service.isDark.value, //its an rxDart ValueObservable
      builder: (context, snapshot) => MaterialApp(
        theme: ThemeData(
          brightness: snapshot.data ? Brightness.dark : Brightness.light,
          primarySwatch: Colors.blue,
///etc etc etc

窗口小部件可以仅使用PreferencesProvider.of(context).service.toggleIsDark()来更改主题。它运行良好,但是冻结大约3秒钟即可更改设备上的主题。在模拟器上,它会立即发生。

任何可能的调试线索都很好。我尝试使用Dart天文台时间轴,但看不到任何有用的信息(我对此没有多大意义)。

1 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为我在最外层的构建函数中创建了自己的BLoC。我将创建内容移至main(),并传入创建的BLoC,从而解决了该问题。除了构建功能中的小部件外,不要创建任何东西!