有没有办法以编程方式更改 Flutter TextTheme 中的属性值?

维力山

我想更改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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法以编程方式读取Java中的.jmod文件?

有没有办法在Swift中以编程方式设置NSCollectionView?

有没有办法以编程方式获得Metal中特定功能的限制?

以编程方式更改文本框的值时,有没有办法收听文本框

有没有办法以编程方式清除Python 3中跨平台的终端?

有没有办法从CLI或Groovy中以编程方式从JIRA中提取冲刺编号?

有没有办法在Android Studio中以编程方式对线性布局进行排序?

有没有办法以编程方式将R源代码保存到文件中?

有没有办法在Entity Framework Core中以编程方式检查未决模型更改?

有没有办法以编程方式创建非常相似的类属性?

有没有办法减少Flutter中NavigationRail中每个元素的高度?

有没有办法在Android中以编程方式在图像上创建渐变?

有没有办法在Symfony2中以编程方式启用SQL日志记录?

有没有办法在sbt中以编程方式调用“重新加载”?

有没有办法在React Native中以编程方式更改SegmentedControlIOS选定的选项?

有没有办法以编程方式调用 DataGridView 中的复选框和列?

有没有办法在 JooQ 中以编程方式回滚事务?

有没有办法在Android中以编程方式更改子字符串的颜色?

有没有办法在flutter中更改版本代码

有没有办法在 angular 7 应用程序中以编程方式清除缓存?

有没有办法以编程方式使用 kotlin 更改片段中的文本颜色?

有没有办法以编程方式更改方面的私有属性?

有没有办法以编程方式获取所有全局 HTML 属性的列表?

有没有办法以编程方式更改查询中执行的功能?

有没有办法以编程方式更改在 Reality Composer 中创建的实体的材料?

有没有办法在java中以编程方式确定JVM CompileThreshold?

有没有办法在 Flutter 的文本字段中显示条形码值?

有没有办法在 Android Kotlin 中以编程方式在视图之间设置边距?

有没有办法以编程方式在框架布局中创建水平滚动排列?