升级到 Flutter 3.10(和 Dart 3)后,我收到此错误:
“PreferredSizeWidget”类不能用作 mixin,因为它是 既不是 mixin 类,也不是 mixin。
当前版本的代码:
class MyAppBar extends StatelessWidget with PreferredSizeWidget {
...
}
如果您遇到同样的错误,只需将“with”更改为“implements”,如下所示:
class MyAppBar extends StatelessWidget implements PreferredSizeWidget {
...
}
描述:
在 Dart 3 中,与之前的版本相比,关于 mixin 的规则更加严格。正如 发行说明 中提到的,在 Dart 3 之前,任何类都可以用作 mixin,只要它没有声明的构造函数并且没有除 Object 之外的超类。在 Dart 3 中,在语言版本 3.0 或更高版本的库中声明的类不能用作 mixin,除非它们显式地用 mixin 关键字标记。
因此,PreferredSizeWidget 没有声明为 mixin,并且在其定义中没有 mixin 关键字。这就是为什么当使用它作为 mixin 时会遇到错误。
使用
implements
代替 with
并运行。