升级Flutter3.10(Dart3)后使用PreferredSizeWidget作为mixin报错
解决Flutter 3.10(Dart 3)中PreferredSizeWidget无法作为mixin的问题
问题原因
Dart 3对mixin的使用规则做了严格限制:只有用mixin关键字定义的类,或者用mixin class标记的类,才能通过with关键字混入。而PreferredSizeWidget是普通抽象类,不符合mixin的要求,所以会触发报错。
解决方法
把with替换成implements,然后实现PreferredSizeWidget要求的preferredSize属性即可:
class MyAppBar extends StatelessWidget implements PreferredSizeWidget { @override Size get preferredSize => const Size.fromHeight(kToolbarHeight); // 可根据需求自定义高度 @override Widget build(BuildContext context) { // 这里写你的自定义AppBar实现逻辑 return AppBar( title: const Text('自定义标题'), ); } }
补充说明
PreferredSizeWidget本质是一个接口类,核心作用是定义preferredSize属性,用来告知父组件当前widget的首选尺寸。用implements实现接口是符合Dart 3语法规范的正确做法。
内容的提问来源于stack exchange,提问作者Soroush Yousefpour
相关产品推荐
相关产品推荐

