web-dev-qa-db-ja.com

Dartメソッドシグネチャでの中括弧の使用は何ですか

class TapboxA extends StatefulWidget {

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

}

この部分 :

TapboxA({Key key}) 

後半

super(key: key);

私は理解しています(スーパークラスコンストラクターの呼び出し)。

しかし、何ですか

{Key key}

構文は?

12
SirPaulMuaddib

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 )

Dart言語ツアーのオプションの名前付きパラメーター に関する詳細情報を見つけることができます。

6
RX Labz

Dartは、コンストラクターに関するオプションを提供します。デフォルトでは、コンストラクターを使用してクラスをインスタンス化すると、定義されたパラメーターを指定する必要があります。

したがって、TapboxA({Key key})は、引数を指定してクラスをインスタンス化できることを意味しますなし

3
james kandau

コンストラクターだけでは特別なことではありません。

すべてのDartメソッドには、Pythonなどの言語のように名前付き引数のオプションがあります

中括弧構文を使用して、名前を持つオプションのパラメーターを定義できます。

したがって、中括弧を使用したメソッドシグネチャでは、

TapboxA({Key key}) :

このコンストラクターは、2つの異なる方法で呼び出すことができます

名前付きパラメーターのない通常の方法

tapboxA1 = TapboxA(keyObject)

名前付きパラメーターの優れた点

tapboxA2 = TapboxA(key: keyObject)

言い換えれば、有用性は、メソッド自体ではなく、メソッドを呼び出すときにもたらされます。

1
binithb