【问题标题】:Flutter: inherit from abstract stateless widgetFlutter:继承自抽象的无状态小部件
【发布时间】:2019-07-23 13:39:51
【问题描述】:

我有一个必须采用自定义小部件的类。这个可以有两种不同的实现,所以我想有一个抽象类作为接口,并创建另外两个扩展抽象类的类。所以,我有:

abstract class ICustomWidget extends StatelessWidget{}

class A extends ICustomWidget{

  @override
  Widget build(BuildContext context) =>
     //Implementation
}

class B extends ICustomWidget {
  @override
  Widget build(BuildContext context) =>
     //Implementation
}

我想问一下这是否是正确的方法,或者还有另一种方法。谢谢

【问题讨论】:

  • 这没有错。通常,组合优于 Flutter 小部件的继承,但这取决于您的具体用例。
  • “一个必须采用自定义小部件的类”你能解释为什么会这样吗?

标签: inheritance flutter widget abstract-class


【解决方案1】:

我会使用implements 而不是extends,因为ICustomWidget 是一个接口,而不是一个类,除非您可以提供更多上下文和/或代码示例。

这是接口的示例代码


abstract class ICustomWidget {
// or
// abstract class ICustomWidget extends StatelessWidget {
  void myProtocal();
}

class A extends StatelessWidget implements ICustomWidget {

  @override
  void myProtocal() {
    // TODO: implement myProtocal
  }

  @override
  Widget build(BuildContext context) {
     //Implementation
  }
}

class B extends ICustomWidget {
  // compilation error, `myProtocal` not implemented
  @override
  Widget build(BuildContext context) {
     //Implementation
  }
}

【讨论】:

    猜你喜欢
    • 2015-04-07
    • 2018-09-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多