You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter安卓端运行报错:TextTheme构造器不可混用2018与2021术语

解决Flutter TextTheme混合2018与2021术语的错误

这个错误的核心原因是TextTheme构造函数不允许同时使用2018版的旧命名属性(如headline1、subtitle1等)和2021版的新命名属性(如displayLarge、headlineMedium等),必须统一采用其中一套命名规范。

修复步骤:

  1. 定位代码中自定义TextTheme的位置(通常在ThemeData的textTheme或primaryTextTheme参数内)。
  2. 统一使用一套命名规则:
    • 推荐使用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),
        ),
      )
      
  3. 检查所有涉及TextTheme的代码,包括使用copyWith扩展主题的场景,确保没有混合新旧属性。

额外技巧

如果想快速创建风格统一的TextTheme,可使用TextTheme.fromTextStyle方法,避免手动逐个设置属性时出错:

TextTheme.fromTextStyle(
  TextStyle(fontFamily: 'Roboto', fontSize: 16),
)

内容的提问来源于stack exchange,提问作者Harsh Kataria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:47:22