gpt4 book ai didi

flutter - Flutter 中的 "with"关键字

转载 作者:IT王子 更新时间:2023-10-29 07:16:25 26 4
gpt4 key购买 nike

我正在读这样一个类:

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

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

最佳答案

我从here得到了答案.

我会分解

我一直在寻找的概念叫做Mixins

那么什么是混合?

Mixins 是一种在多个类层次结构中重用一个类的代码的方法,换句话说,当我们需要一个功能但我们不能在一个父类(super class)中实现它时,或者这样做没有意义

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

我们有下图

Classes

因为黄色方 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com