有人可以解释这个Dart语法

时间:2017-10-12 20:03:03

标签: syntax constructor dart

class TapboxA extends StatefulWidget {

 TapboxA({Key key}) : super(key: key);

}

这部分:

TapboxA({Key key}) 

下半场

super(key: key);

我理解,(调用超类构造函数)。

但是什么是

{Key key}

语法在做什么?

3 个答案:

答案 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 )

您可以找到有关 optional named parameters in the Dart language tour

的更多信息

答案 1 :(得分:3)

Dart在构造函数上提供了一个选项。默认情况下,当您使用构造函数实例化类时,必须提供定义的参数。

因此,TapboxA({Key key})意味着您可以实例化类,而无需提供参数。

答案 2 :(得分:1)

仅构造函数不是什么特别的事情。

对于所有Dart方法,我们可以选择命名参数的选项,例如Python之类的语言

使用大括号语法,可以定义具有名称的可选参数。

因此,使用大括号的方法签名,

TapboxA({Key key}) :

您可以通过两种不同的方式调用此构造函数

没有命名参数的常用方法

tapboxA1 = TapboxA(keyObject)

命名参数的额外好处

tapboxA2 = TapboxA(key: keyObject)

换句话说,有用性是在调用方法时出现的,而不是在方法本身中出现的。