Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 有没有一种方法可以通过编程更改FlatterTextTheme中属性的值?_Flutter_User Interface - Fatal编程技术网

Flutter 有没有一种方法可以通过编程更改FlatterTextTheme中属性的值?

Flutter 有没有一种方法可以通过编程更改FlatterTextTheme中属性的值?,flutter,user-interface,Flutter,User Interface,我想更改textTheme变量的样式。当我从JSON读取值时,我想动态编辑headline2属性,不想一直使用条件来覆盖所有情况 JSON代码段: { "headline2": { "color": "0x000000", "fontFamily": "opr" } } 代码段: var textTheme = TextTheme( headline2: TextSt

我想更改
textTheme
变量的样式。当我从JSON读取值时,我想动态编辑
headline2
属性,不想一直使用条件来覆盖所有情况

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();
   }
}
您的文本主题将被修改如下:

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"
      )
    );
final ThemeProvider\u ThemeProvider=
(上下文)的提供者;
var textTheme=\u themeProvider.darkTheme?文本主题(
标题2:文本样式(
颜色:颜色,黑色,
方舟家族
):text主题(
标题2:文本样式(
颜色:颜色,白色,
方舟家族
)
);
每次调用
changeTheme()
函数时,textTheme,因此,您的应用程序将完全更新


如果您不熟悉
变更通知提供者

正确。谢谢!