使用ThemeData为Flutter Text组件设置颜色时出现语法错误如何解决
问题原因及解决方案
场景1:给Text组件的color参数传递主题样式的颜色时报错
- 报错原因:你使用的Dart 2.13版本已启用空安全,
Theme.of(context).textTheme.xxx对应的TextStyle的color属性是可空类型Color?,而Text组件的color参数要求传入非空的Color类型,类型不匹配触发语法错误。 - 修复方案:
- 方法1:确认主题配置中对应样式的color一定不为空时,加
!强制断言非空Text( "测试文本", color: Theme.of(context).textTheme.bodyText1!.color, ) - 方法2:用
??运算符设置兜底默认值,避免空异常Text( "测试文本", color: Theme.of(context).textTheme.bodyText1?.color ?? Colors.black, )
- 方法1:确认主题配置中对应样式的color一定不为空时,加
场景2:定义ThemeData的textTheme时报错
- 报错原因:TextTheme的每个属性要求传入的是
TextStyle类型对象,如果你直接传入Color值会触发类型不匹配错误。 - 修复方案:包裹一层TextStyle,将颜色赋值给TextStyle的color属性
ThemeData( textTheme: TextTheme( // 正确写法 bodyText1: TextStyle(color: Colors.black, fontSize: 16), // 错误写法:bodyText1: Colors.black ) )
内容的提问来源于stack exchange,提问作者xpetta
相关产品推荐
相关产品推荐

