Flutter抽象类如何为Getter设置默认值并支持重写?
实现方案
在Dart中,要给抽象类的Getter属性设置默认值并允许子类按需重写,只需把原来的抽象Getter替换为带有默认实现的普通Getter即可,具体代码修改如下:
abstract class Dummy { // ... Duration get progressBarAnimationDuration => const Duration(milliseconds: 300); Curve get progressBarAnimationCurve => Curves.easeInOut; }
子类重写示例
如果子类需要自定义这两个属性的值,直接通过@override关键字重写对应的Getter即可;不需要修改的属性会自动继承父类的默认值:
class CustomDummy extends Dummy { // 重写动画时长,使用自定义值 @override Duration get progressBarAnimationDuration => const Duration(milliseconds: 500); // 不重写动画曲线,自动使用父类的Curves.easeInOut }
原理说明
原来的抽象Getter会强制所有子类必须实现该属性,改成带默认实现的普通Getter后,子类既可以选择继承默认值,也能根据自身需求重写,完全满足“默认值+按需重写”的需求。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

