inheritanceflutterwidgetabstract-class

Flutter: inherit from abstract stateless widget


I have a class that has to take a custom widget. This one can have two different implementations, so I would like to have an abstract class as interface and create two other classes those extend the abstract one. So, I have:

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
}

I want to ask if this is the right way to do this or there is another one. Thanks


Solution

  • Rather than extends, I would use implements, because ICustomWidget is an interface, not a class, except if you can give more context and/or code sample.

    Here's the sample code for interface

    
    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
      }
    }