【发布时间】:2020-09-27 03:19:00
【问题描述】:
我想要这样的东西:
abstract class A {
void someMethod(dataStates) {
switch (dataStates) {
case DataStates.loading:
stackIndex = 0;
break;
case DataStates.failed:
stackIndex = 1;
break;
case DataStates.completed:
stackIndex = 2;
break;
} // switch
} // someMethod
} // class A
class B implements A {
@override
void someMethod(dataStates) {
switch (dataStates) {
case DataStates.loading:
stackIndex = 0;
break;
case DataStates.failed:
stackIndex = 1;
break;
case DataStates.completed:
stackIndex = 2;
break;
} // switch
} // someMethod
} // class B
但是当我在 B 类中重写 someMethod() 时,我得到一个空主体的方法,如下所示:
@override
void someMethod(dataStates) {
// TODO: implement someMethod
}
重写时如何拥有默认(模板)方法体?
【问题讨论】:
-
你的问题有点不清楚。我明白了,您只想要一个预先编写的覆盖模板?对吗?
-
@ShahzadAkram 完全正确!
-
如果您只想再次执行相同的代码,这是不可能的,您可以使用
super.someMethod(dataStates);,如下面的答案中所述。但是您期望任何第三方插件都可以实现,但默认情况下似乎不可能成为 dart SDK 的一部分。 -
听起来您正在寻找代码生成器。我可以建议 Freezed,它具有
when功能吗?
标签: oop flutter dart overriding abstract-class