“PreferredSizeWidget”类不能用作 mixin,因为它既不是 mixin 类也不是 mixin

问题描述 投票:0回答:2

升级到 Flutter 3.10(和 Dart 3)后,我收到此错误:

“PreferredSizeWidget”类不能用作 mixin,因为它是 既不是 mixin 类,也不是 mixin。

当前版本的代码:

class MyAppBar extends StatelessWidget with PreferredSizeWidget {
  ...
}
flutter dart mixins
2个回答
95
投票

如果您遇到同样的错误,只需将“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 时会遇到错误。


0
投票

使用

implements
代替
with
并运行。

© www.soinside.com 2019 - 2024. All rights reserved.