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