Flutter中的“ with”关键字

阿卜杜勒·拉赫曼·法永

我正在读类似的课程:

class SplashScreenState extends State<SplashScreen>
    with SingleTickerProviderStateMixin {
 ...
 ...
}

我只是想知道在这种情况下with关键字指的是什么为什么我们要使用它呢?

阿卜杜勒·拉赫曼·法永

我从这里得到了答案

我会分解

我一直在寻找的概念称为Mixins

那么什么是mixin?

Mixins是在多个类层次结构中重用类代码的一种方式,换句话说,当我们需要某种功能并且不能在超类之一中实现它时,这样做就没有意义了。

如果有点难以理解,让我们看下面的例子

我们有下图

班级

如上图所示,黄色正方形表示行走的能力,蓝色正方形表示......

我们这里有一个称为Animal的超类,它具有三个子类(哺乳动物,鸟类和鱼类)

有些动物有共同的行为:猫和鸽子都可以走路,但猫不能飞。这些行为与该分类正交,因此我们无法在超类中实现这些行为。如果一个类可以有多个超类,这很容易,我们可以创建其他三个类:Walker,Swimmer,Flyer。之后,我们只需继承Walker类中的Dove和Cat。但是在Dart中,每个类(对象除外)都只有一个超类。除了可以从Walker类继承之外,我们可以实现它,就好像它是一个接口一样,但是我们必须在多个类中实现行为,因此这不是一个好的解决方案。

因此,这里使用with

让我们定义沃克类

class Walker {
  void walk() {
    print("I'm walking");
  }
}

为了解决上述问题,我们使用了mixin

class Cat extends Mammal with Walker {}

class Dove extends Bird with Walker, Flyer {}

现在,如果我们打电话

main(List<String> arguments) {
  Cat cat = Cat();
  Dove dove = Dove();

  // A cat can walk.
  cat.walk();

  // A dove can walk and fly.
  dove.walk();
  dove.fly();

  // A normal cat cannot fly.
  // cat.fly(); // Uncommenting this does not compile.
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章