class TapboxA extends StatefulWidget {
TapboxA({Key key}) : super(key: key);
}
这部分:
TapboxA({Key key})
下半场
super(key: key);
我理解,(调用超类构造函数)。
但是什么是
{Key key}
语法在做什么?
答案 0 :(得分:6)
在Dart构造函数(和其他方法)中可以有可选的命名参数:
MyClass({String namedParam}){//...}
对于Flutter小部件构造函数:
TapboxA({Key key}) // TapboxA constructor defines a named parameters `key`
: super(key: key); //which is used within the super constructor call (which also has `key` as named parameter )
的更多信息
答案 1 :(得分:3)
Dart在构造函数上提供了一个选项。默认情况下,当您使用构造函数实例化类时,必须提供定义的参数。
因此,TapboxA({Key key})
意味着您可以实例化类,而无需提供参数。
答案 2 :(得分:1)
仅构造函数不是什么特别的事情。
对于所有Dart方法,我们可以选择命名参数的选项,例如Python之类的语言
使用大括号语法,可以定义具有名称的可选参数。
因此,使用大括号的方法签名,
TapboxA({Key key}) :
您可以通过两种不同的方式调用此构造函数
没有命名参数的常用方法
tapboxA1 = TapboxA(keyObject)
命名参数的额外好处
tapboxA2 = TapboxA(key: keyObject)
换句话说,有用性是在调用方法时出现的,而不是在方法本身中出现的。