关于使用 ChangeNotifierProvider 时的性能问题

问题描述

我使用 Streams 在我的应用程序中实现了暗/亮模式。 我的问题是,颜色的变化非常滞后。

我的代码中到处都是这样的片段:

Provider.of<ThemeMode>(context) == ThemeMode.light
                                    ? Colors.black : Colors.white

这就是为什么我决定写一个小的 ChangeNotifierProvider: ColorState

class ColorState with ChangeNotifier {
  ThemeModel _themeModel = ThemeModel();

  Color _textColor = Colors.black;
  Color get textColor => _textColor;

  Color _backgroundColor = Colors.white;
  Color get backgroundColor => _backgroundColor;

  listenToModeChange() {
    _themeModel.themeStream.listen((newMode) {
      if (newMode == ThemeMode.light) {
        _textColor = Colors.black;
        _backgroundColor = Colors.white;
        notifyListeners();
      } else {
        _textColor = Colors.white;
        _backgroundColor = Color(0xff121212);
        notifyListeners();
      }
    });
  }
}

现在我用看起来像这样的新片段替换了很多这些小片段:

backgroundcolor: Provider.of<ColorState>(context).backgroundColor,

color: Provider.of<ColorState>(context).textColor

现在我的整个用户界面都滞后了。我虽然摆脱这些三元情况很聪明。似乎通过我的应用程序多次收听 ChangeNotifierProvider 的速度要慢得多?我不知道,我希望它会更顺畅。现在看来正好相反。

还有: 我知道可以为暗/亮模式使用和自定义 ThemeData,但我的应用程序中并不总是需要相同的颜色。这就是为什么我必须在不同位置手动设置颜色。

我的问题是:有没有更好的解决方案?我应该继续使用三元运算符吗? 听供应商的声音可能 100 次真的那么慢吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)