【发布时间】:2021-04-10 12:10:06
【问题描述】:
在 Flutter 中我们有类
abstract class PreferredSizeWidget implements Widget {
Size get preferredSize;
}
和
@immutable
abstract class Widget extends DiagnosticableTree {
const Widget({ this.key });
final Key? key;
@protected
@factory
Element createElement();
@override
String toStringShort() {
final String type = objectRuntimeType(this, 'Widget');
return key == null ? type : '$type-$key';
}
@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties.defaultDiagnosticsTreeStyle = DiagnosticsTreeStyle.dense;
}
@override
@nonVirtual
bool operator ==(Object other) => super == other;
@override
@nonVirtual
int get hashCode => super.hashCode;
static bool canUpdate(Widget oldWidget, Widget newWidget) {
return oldWidget.runtimeType == newWidget.runtimeType
&& oldWidget.key == newWidget.key;
}
static int _debugConcreteSubtype(Widget widget) {
return widget is StatefulWidget ? 1 :
widget is StatelessWidget ? 2 :
0;
}
}
我的问题是:为什么如果我们混合使用 PreferredSizeWidget 类,我们就不必实现所有抽象类的 Widget 方法和抽象方法?
我试图模拟一些代码
class A implements B {}
abstract class B extends C {}
abstract class C {
void test() {
print("test");
}
}
出现错误
Error: The non-abstract class 'A' is missing implementations for these members:
- C.test
class A implements B {
^
lib/main.dart:16:8:
【问题讨论】:
标签: flutter dart interface abstract-class abstract