微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于使用 ChangeNotifierProvider 时的性能问题

如何解决关于使用 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 举报,一经查实,本站将立刻删除。