我想更改textTheme
变量的样式。我想动态编辑headline2
属性,因为我从 JSON 读取值,并且不想一直使用条件来涵盖所有情况。
JSON 片段:
{
"headline2": {
"color": "0x000000",
"fontFamily": "opr"
}
}
代码片段:
var textTheme = TextTheme(
headline2: TextStyle(
color: Colors.white,
fontFamily: "ark"
)
);
有没有办法做到这一点?
任何帮助表示赞赏。谢谢!
如果您想在textTheme
修改变量时动态更新应用程序的每个小部件,您可能需要一个ChangeNotifierProvider
.
我想这TextTheme
将被添加到ThemeData
所以你需要在你的代码的最开始你ChangeNotifierProvider
就在上面MaterialApp
。
然后,你ChangeNotifier
应该看起来像这样:
class ThemeProvider extends ChangeNotifier {
bool darkTheme;
ThemeProvider() {
darkTheme = true;
}
changeTheme()
{
darkTheme = !darkTheme;
notifyListeners();
}
}
您的 textTheme 将被修改为:
final ThemeProvider _themeProvider =
Provider.of<ThemeProvider>(context);
var textTheme = _themeProvider.darkTheme ? TextTheme(
headline2: TextStyle(
color: Colors.black,
fontFamily: "ark"
) : TextTheme(
headline2: TextStyle(
color: Colors.white,
fontFamily: "ark"
)
);
每次changeTheme()
调用函数时,都会调用 textTheme,因此,您的应用程序将完全更新。
如果您不熟悉ChangeNotifierProvider
:简单的应用程序状态管理
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句