Flutter:从抽象无状态小部件继承

10

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

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小部件中,组合优于继承,但这取决于您具体的用例。这句话没有任何问题。 - Günter Zöchbauer
需要使用自定义小部件的类,您能解释一下原因吗? - TruongSinh
1个回答

12

如果没有更多的上下文和/或代码示例,我会使用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
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接