Flutter安卓端运行报错:TextTheme构造器不可混用2018与2021术语
解决Flutter TextTheme混合2018与2021术语的错误
这个错误的核心原因是TextTheme构造函数不允许同时使用2018版的旧命名属性(如headline1、subtitle1等)和2021版的新命名属性(如displayLarge、headlineMedium等),必须统一采用其中一套命名规范。
修复步骤:
- 定位代码中自定义
TextTheme的位置(通常在ThemeData的textTheme或primaryTextTheme参数内)。 - 统一使用一套命名规则:
- 推荐使用2021新命名(Flutter官方主推,语义更清晰):
新属性包含:displayLarge/Medium/Small、headlineLarge/Medium、titleLarge/Medium/Small、bodyLarge/Medium/Small、labelLarge/Medium/Small。
示例代码:ThemeData( textTheme: TextTheme( displayLarge: TextStyle(fontSize: 32, fontWeight: FontWeight.bold), headlineMedium: TextStyle(fontSize: 28, color: Colors.grey[700]), titleLarge: TextStyle(fontSize: 24), bodyLarge: TextStyle(fontSize: 16, height: 1.5), ), ) - 若需兼容旧代码,可继续使用2018旧命名:
旧属性包含:headline1-headline6、subtitle1-subtitle2、bodyText1-bodyText2、caption、button、overline。
示例代码:ThemeData( textTheme: TextTheme( headline1: TextStyle(fontSize: 32, fontWeight: FontWeight.bold), headline2: TextStyle(fontSize: 28, color: Colors.grey[700]), headline3: TextStyle(fontSize: 24), bodyText1: TextStyle(fontSize: 16, height: 1.5), ), )
- 推荐使用2021新命名(Flutter官方主推,语义更清晰):
- 检查所有涉及
TextTheme的代码,包括使用copyWith扩展主题的场景,确保没有混合新旧属性。
额外技巧
如果想快速创建风格统一的TextTheme,可使用TextTheme.fromTextStyle方法,避免手动逐个设置属性时出错:
TextTheme.fromTextStyle( TextStyle(fontFamily: 'Roboto', fontSize: 16), )
内容的提问来源于stack exchange,提问作者Harsh Kataria
相关产品推荐
相关产品推荐

