【发布时间】:2019-07-24 21:34:29
【问题描述】:
飞镖课程中的超级和关键词有什么作用? 一个例子是下面的代码:
class CardTitle extends StatelessWidget {
final String title;
const CardTitle(this.title, **{Key key}**) : **super(key: key)**;
【问题讨论】:
飞镖课程中的超级和关键词有什么作用? 一个例子是下面的代码:
class CardTitle extends StatelessWidget {
final String title;
const CardTitle(this.title, **{Key key}**) : **super(key: key)**;
【问题讨论】:
super用于调用基类的构造函数。所以在你的例子中,CardTitle 的构造函数调用了StatelessWidget 的构造函数。
Key 是 Flutter 中用于识别小部件的类型,并允许 Flutter 知道何时在树中移动的小部件与之前位于不同位置的小部件相同。这里有一个关于按键的好视频:https://www.youtube.com/watch?v=kn0EOS-ZiIc
【讨论】:
Keys 用作 Widgets、Elements 和 SemanticsNodes 的标识符。大多数时候您不需要使用 Keys,框架会为您处理它并在内部使用它们来区分小部件.有关它们的更多信息,请参见: https://flutter.dev/docs/development/ui/widgets-intro#keys
至于Super关键字:
我们在您的示例中看到 CardTitle 小部件扩展了超类 statelesswidget 并在其构造函数中“:”启动了“初始化列表”,这是一个逗号分隔的表达式列表,在超类的构造函数之前执行,因此也在构造函数体。
在您问题的示例中,传递给构造函数的键参数被转发到超类的未命名构造函数的命名参数键。
【讨论】: