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