Flutter &引用;加上;颤振中的关键词
我在读一门课,比如:Flutter &引用;加上;颤振中的关键词,flutter,dart,Flutter,Dart,我在读一门课,比如: class SplashScreenState extends State<SplashScreen> with SingleTickerProviderStateMixin { ... ... } 类状态扩展状态 使用SingleTickerProviderStateMixin{ ... ... } 我只是想知道,在这个上下文中,关键字的指的是什么,为什么我们要使用它?我从中得到了答案 我会把它分解 我正在寻找的概念称为Mixins 那么什么是
class SplashScreenState extends State<SplashScreen>
with SingleTickerProviderStateMixin {
...
...
}
类状态扩展状态
使用SingleTickerProviderStateMixin{
...
...
}
我只是想知道,在这个上下文中,关键字的指的是什么,为什么我们要使用它?我从中得到了答案
我会把它分解
我正在寻找的概念称为Mixins
那么什么是混合物
混入是在多个类层次结构中重用类代码的一种方式,换句话说,当我们需要一个功能而无法在一个超类中实现它时,或者这样做没有意义时
如果有点难以理解,让我们看看下面的例子
我们有下面的图表
因为黄色方块指的是行走的能力
蓝色广场。。。。。。如上图所述
这里我们有一个叫做动物的超类,它有三个子类(哺乳动物、鸟类和鱼类)
有些动物有共同的行为:猫和鸽子都会走路,但猫不会飞。
这些类型的行为与这个分类是正交的,所以我们不能在超类中实现这些行为。
如果一个类可以有多个超类,那就很容易了,我们可以创建另外三个类:Walker、Silvery、Flyer。在那之后,我们只需要从沃克类继承鸽子和猫。但在Dart中,每个类(对象除外)只有一个超类。
我们可以实现它,而不是从Walker类继承,就像它是一个接口一样,但是我们必须在多个类中实现该行为,所以这不是一个好的解决方案
因此,使用和
让我们定义walker类
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.
}
main(列出参数){
猫=猫();
鸽子鸽子=鸽子();
//猫会走路。
猫走();
//鸽子能走能飞。
鸽子。行走();
鸽子。飞();
//正常的猫不能飞。
//cat.fly();//取消对此的注释不会编译。
}