我正在读类似的课程:
class SplashScreenState extends State<SplashScreen>
with SingleTickerProviderStateMixin {
...
...
}
我只是想知道 with 关键字在这种情况下指的是什么,为什么我们要使用它?
答案 0 :(得分:0)
我从here得到了答案。
我会分解
我一直在寻找的概念称为 Mixins
那么,mixin是什么?
Mixins是在多个类层次结构中重用类代码的一种方式,换句话说,当我们需要某种功能并且不能在超类之一中实现它时,或者这样做没有任何意义< / strong>
如果有点难以理解,让我们看下面的示例
我们有下图
黄色正方形代表行走的能力 和蓝色方块......如上图所述
我们这里有一个名为Animal的超类,它具有三个子类(哺乳动物,鸟类和鱼类)
有些动物有共同的行为:猫和鸽子都可以走路,但猫不能飞。 这些行为与该分类正交,因此我们无法在超类中实现这些行为。 如果一个类可以有多个超类,那很容易,我们可以创建其他三个类:Walker,Swimmer,Flyer。之后,我们只需要从Walker类继承Dove和Cat。但是在Dart中,每个类(对象除外)都只有一个超类。 除了可以继承Walker类之外,我们可以实现它,就好像它是一个接口一样,但是我们必须在多个类中实现该行为,所以这不是一个好的解决方案。
因此使用和
让我们定义助行器类
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.
}