无法在调用 TextTheme() 构造函数时混合 2018 年和 2021 年术语

efe*_*zer 17 android ios flutter

我将 flutter 项目的版本升级到 3.0.0,以便使用 null 安全功能。当我运行该项目时,我在调用 TextTheme() 构造函数时收到 Cannot mix 2018 and 2021 terms 。错误。

\n
\n

无法在调用 TextTheme() 构造函数时混合 2018 年和 2021 年术语。\n'package:flutter/src/material/text_theme.dart':\npackage:flutter/\xe2\x80\xa6/material/text_theme.dart:1\ n失败的断言:第118行第10行:'(displayLarge == null && displayMedium == null && displaySmall == null && headerMedium == null &&\nheadlineSmall == null && titleLarge == null && titleMedium == null && titleSmall == null &&\nbodyLarge == null && bodyMedium == null && bodySmall == null && labelLarge == null && labelSmall == null) ||\n(headline1 == null && header2 == null && header3 == null && header4 == null &&\nheadline5 == null && header6 == null && subtitle1 == null && subtitle2 == null &&\nbodyText1 == null && bodyText2 == null && 标题 == null && 按钮 == null && 上划线 == null)'

\n
\n

有谁知道我应该做什么?

\n

小智 36

@mister_cool_beans 是正确的。Flutter 正在过渡到 Material 3 文本样式名称TextTheme。我们正处于两套同时存在的尴尬时期。请在此处查看与更改相关的提交的更多信息。

更明确地说,您只能使用 terms2018 年系列2021 年系列。相应更新您的TextTheme/ThemeData。我建议你趁机升级到2021年。

2021年设定

displayLarge, displayMedium, displaySmall 
headlineLarge, headlineMedium, headlineSmall 
titleLarge, titleMedium, titleSmall 
bodyLarge, bodyMedium, bodySmall 
labelLarge, labelMedium, labelSmall
Run Code Online (Sandbox Code Playgroud)

2018套

headline1, headline2, headline3, headline4, headline5, headline6
subtitle1, subtitle2
bodyText1, bodyText2
caption, button, overline
Run Code Online (Sandbox Code Playgroud)

正如 @Partick 提到的,如果您向下滚动到此处看到的实现,您可以看到代码中定义的集合。

...
}) : assert(
       (displayLarge == null && displayMedium == null && displaySmall == null && headlineMedium == null &&
           headlineSmall == null && titleLarge == null && titleMedium == null && titleSmall == null &&
           bodyLarge == null && bodyMedium == null && bodySmall == null && labelLarge == null && labelSmall == null) ||
       (headline1 == null && headline2 == null && headline3 == null && headline4 == null &&
           headline5 == null && headline6 == null && subtitle1 == null && subtitle2 == null &&
           bodyText1 == null && bodyText2 == null && caption == null && button == null && overline == null),
       'Cannot mix 2018 and 2021 terms in call to TextTheme() constructor.'
     ),
...
Run Code Online (Sandbox Code Playgroud)


Pat*_*ick 0

请注意,您不能将 2018 年款式与 2021 年款式混搭。此构造函数中只允许使用其中之一。2018 年的样式最终将被弃用并删除。来源:源文件