我正在读类似的课程:
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] 删除。
我来说两句