Search code examples
flutterdartoopabstract-classflutter-web

Pass extended class of an abstract class as a parameter in flutter


I am trying to build a website using flutter but I can't figure out. This is an abstract class.

abstract class TableBaseClass {
  int getPage(BuildContext context);
  void setPage(int val,BuildContext context);
  int getPagination();
  void setPagination(String val,BuildContext context);
  void setSearch(String val,BuildContext context);
  String getSearch();
  dynamic getData();
  List getHeaders();
  List getBodyFields();
  void refresh(BuildContext context);
  void setSort(String header);
  void setOrder(String order,BuildContext context);
  String getOrder();
}

And this class is extending it.

class Objects extends TableBaseClass with ChangeNotifier {

and this widget takes the abstract class as a parameter.

class TableWidget extends StatefulWidget {
  final TableBaseClass provider;
  final String menuButton;

  const TableWidget(this.provider,this.menuButton, {super.key});

but when I pass the Objects class TableWidget(Objects,menuButton) It gives error The argument type 'Type' can't be assigned to the parameter type 'TableBaseClass'.

Any help is appreciated in advance.


Solution

  • because you're simply trying to pass a Type, not an instance of the TableBaseClass class, you didn't call the class constructor, see this:

    print(TableBaseClass); // this is a type, 
    print(TableBaseClass.runtimeType); // Type
    

    but with (), you're creating an instance of that class:

    print(TableBaseClass()); // this is an instance of TableBaseClass 
    print(TableBaseClass().runtimeType); // TableBaseClass