我最近尝试创建一个抽象小部件,它同时具有无状态和有状态实现,两者都可以通过工厂方法访问。
在下面,我添加了一个最小的示例,说明我认为适用于我的用例的唯一真正可行的解决方案,但它给我留下了一些不足之处。
例如,对于这个解决方案,我必须声明并覆盖子类中的每个变量,而我真的很想依赖于它们是子类型并隐式具有这些变量的事实。
你们中有人需要做类似的事情吗?你有没有想出不同的方法?
对于那些关心我为什么需要这个的人:我想为我的应用程序制作一个单一的按钮类,然后对特定样式的按钮(常规按钮、“条纹”按钮、按钮当用户向下滚动页面时“加载”,并在用户到达页面末尾时变为活动状态,等等)。这样我就可以在需要特定按钮的地方简单地调用“Button.implementation”,并将所有与按钮相关的代码放在同一个地方。
干杯。
abstract class A {
final int intellect;
A(this.intellect);
factory A.giveMeB(int intellect) {
return _B(intellect);
}
factory A.giveMeC(int intellect) {
return _C(intellect);
}
}
class _B extends StatelessWidget implements A {
@override
final int intellect;
_B(this.intellect);
@override
Widget build(BuildContext context) {
return SizedBox.shrink();
}
}
class _C extends StatefulWidget implements A {
@override
final int intellect;
const _C(this.intellect, {Key key}) : super(key: key);
@override
_CState createState() => _CState();
}
class _CState extends State<_C> {
@override
Widget build(BuildContext context) {
return Container();
}
}