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

标签 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天文台时间轴,但看不到任何有用的信息(我对此没有多大意义)。

最佳答案

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

关于dart - 仅在设备上诊断Flutter MaterialApp主题运行时更改缓慢的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54525972/

相关文章:

dart - 为什么颜色没有变化?

dart - Flutter - 点击检测 TextField

flutter - 在 FutureBuilder 中访问多个 future 的结果

flutter - Flutter HTTP 和 Flutter Dio 有什么区别?

dart - On Back Press 按钮回调功能在 Flutter 中不起作用

dart - 在文本小部件中使用变量

flutter - 如何用肘节改变 bool true false ?

dart - Dart单元测试包中的protectAsyncN如何工作?

asynchronous - Flutter中可靠/持久的计时器

flutter - 如何按国家/地区代码获取货币和货币符号?