首页 > 解决方案 > 是否可以同时将有状态小部件和无状态小部件作为另一个类的子类型?

问题描述

我最近尝试创建一个抽象小部件,它同时具有无状态和有状态实现,两者都可以通过工厂方法访问。

下面我添加了一个最小示例,说明我发现的唯一真正可行的解决方案适用于我的用例,但它给我留下了一些不足之处。

例如,使用此解决方案,我必须声明并覆盖子类中的每个变量,而我真的很想依赖它们是子类型并隐含地拥有这些变量的事实。

你们有没有人需要做类似的事情?你有没有想出不同的方法?

对于那些担心我为什么需要这个的人:我想为我的应用程序制作一个单一的 Button-Class,然后对特定样式的按钮(常规按钮、“条纹”按钮、“加载”按钮' 当用户向下滚动页面并在用户到达页面末尾时变为活动状态等)。这样我就可以在需要特定按钮的地方简单地调用“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();
  }
}


标签: flutterpolymorphism

解决方案


推荐阅读