dev*_*miu 4 oop abstract-class design-patterns dart flutter
我创建了一个抽象类,其中包含无状态小部件可以覆盖的方法和属性,但在实现该类之后,由于无状态小部件的不变性,我必须将小部件属性设置为最终属性,然后将抽象类属性也设置为最终属性。然后,我收到错误,必须初始化最终变量。
使用最终变量实现抽象类的正确方法是什么?
抽象类
abstract class BusinessCard {
final CardView cardView;
final CardInfo cardInfo;
Widget front(BuildContext context);
Widget back(BuildContext context);
}
Run Code Online (Sandbox Code Playgroud)
实施类
class Card1 extends StatelessWidget implements BusinessCard {
final CardView cardView;
final CardInfo cardInfo;
Card1({
@required this.cardView,
@required this.cardInfo,
});
@override
Widget build(BuildContext context) {
return cardView == CardView.front ? front(context) : back(context);
}
@override
Widget front(BuildContext context) {
}
@override
Widget back(BuildContext context) {
}
}
Run Code Online (Sandbox Code Playgroud)
jam*_*lin 12
类abstract不能自行构造,但它仍然可以具有派生类可以调用的构造函数。抽象基类中的构造函数可以初始化其final成员。
数据成员隐式地将 getter 和 setter 添加到接口。final成员隐式添加 getter,而不添加 setter。这意味着您的课程可能是:
abstract class BusinessCard {
CardView get cardView;
CardInfo get cardInfo;
Widget front(BuildContext context);
Widget back(BuildContext context);
}
class Card1 extends StatelessWidget implements BusinessCard {
@override
final CardView cardView;
@override
final CardInfo cardInfo;
Card1({
required this.cardView,
required this.cardInfo,
});
...
Run Code Online (Sandbox Code Playgroud)
现在你的抽象类将是一个纯接口类,没有实现,也不存储数据。
| 归档时间: |
|
| 查看次数: |
8448 次 |
| 最近记录: |