flutter 如何扩展 dart /扑翼类

vlf7wbxs  于 2023-01-27  发布在  Flutter
关注(0)|答案(3)|浏览(155)

我有A类:

class A{
    String title;
    String content;
    IconData iconData;
    Function onTab;
    A({this.title, this.content, this.iconData, this.onTab});
}

我如何创建类B,扩展类A与其他变量如下:

class B extends A{
    bool read;
    B({this.read});
}

尝试使用此方法,但不起作用

let o = new B(
          title: "New notification",
          iconData: Icons.notifications,
          content: "Lorem ipsum doro si maet 100",
          read: false,
          onTab: (context) => {

          });
mdfafbf1

mdfafbf11#

必须在子类上定义构造函数。

class B extends A {
  bool read;
  B({title, content, iconData, onTab, this.read}) : super(title: title, content: content, iconData: iconData, onTab: onTab);
}
6jjcrrmo

6jjcrrmo2#

为了适应2023年的更新,自Dart 2.17以来,我们有了超级初始化器-详细描述by Michael Thomsen here
您不再需要显式调用super。
示例:

class B extends A {
    bool read;
    B({super.title, super.content, super.iconData, super.onTab, this.read});
}
ccgok5k5

ccgok5k53#

**你可以使用extends关键字继承或扩展一个类。这允许你在相似但不完全相同的类之间共享属性和方法。同样,它允许不同的子类型共享一个公共的运行时类型,这样静态分析就不会失败。(下面会详细介绍);经典的例子是使用不同类型的动物。

class Animal {
  Animal(this.name, this.age);
  
  int age;
  String name;

  void talk() {
    print('grrrr');
  }
}

class Cat extends Animal {
  // use the 'super' keyword to interact with 
  // the super class of Cat
  Cat(String name, int age) : super(name, age);
  
  void talk() {
    print('meow');
  }
  
}

class Dog extends Animal {
  // use the 'super' keyword to interact with 
  // the super class of Cat
  Dog(String name, int age) : super(name, age);
  
  void talk() {
    print('bark');
  }
  
}

void main() {
  var cat = Cat("Phoebe",1);
  var dog = Dog("Cowboy", 2);
  
  dog.talk();
  cat.talk();
}

相关问题