我正在读这样一个类:
class SplashScreenState extends State<SplashScreen>
with SingleTickerProviderStateMixin {
...
...
}
我只是想知道在这种情况下 with 关键字指的是什么以及我们为什么要使用它?
最佳答案
我从here得到了答案.
我会分解
我一直在寻找的概念叫做Mixins
那么什么是混合?
Mixins 是一种在多个类层次结构中重用一个类的代码的方法,换句话说,当我们需要一个功能但我们不能在一个父类(super class)中实现它时,或者这样做没有意义强>
如果有点难理解让我们看下面的例子
我们有下图
因为黄色方 block 是指行走的能力 而蓝色方 block ……如上图所述
我们这里有一个名为 Animal 的父类(super class),它具有三个子类(哺乳动物、鸟类和鱼类)
有些动物有共同的行为:猫和鸽子都能走路,但猫不能飞。 这些行为与这个分类是正交的,所以我们不能在父类(super class)中实现这些行为。 如果一个类可以有多个父类(super class),那就很容易了,我们可以创建另外三个类:Walker、Swimmer、Flyer。之后,我们只需要从 Walker 类继承 Dove 和 Cat。但是在 Dart 中,每个类(除了 Object)都有一个父类(super class)。 我们可以实现它,而不是从 Walker 类继承,就像它是一个接口(interface)一样,但是我们必须在多个类中实现该行为,所以这不是一个好的解决方案。
所以这里要使用with
让我们定义步行者类
class Walker {
void walk() {
print("I'm walking");
}
}
为了解决上述问题,我们使用 mixins
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.
}
关于flutter - Flutter 中的 "with"关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57243896/