问题描述
我使用 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 (将#修改为@)