【Flutter/Dart】名前付き引数で関数定義|オプション引数・デフォルト値を指定

今回は名前付き引数(Named parameter)でメソッドやコンストラクタの関数に引数を渡す方法を紹介します。

Flutterで使用されるWidgetのコンストラクタでは「名前付き引数」を使用するのが推奨されています。

notably Flutter widget constructors—use only named parameters, even for parameters that are mandatory. See the next section for details.

Language tour|Dart

\ 世界最大級のオンライン学習サービス /

目次

名前付き引数とは?

String message = say(msg: 'Hello World', from: 'Alex');

名前付き引数とは上記コードのように引数名: 値の形式で関数に値を渡す引数のことです。

Flutterで使用されるWidgetのコンストラクタにも名前付き引数が使用されています。

名前付き引数による関数定義

String say({required String msg, String? from, String? to}) {
  var result = 'メッセージ:$msg';
  if (from != null) {
    result = '$result, From $from';
  }
  if (to != null) {
    result = '$result, To $to';
  }
  return result;
}

関数のパラメータを名前付き引数にするには波括弧{}で囲みます。

デフォルト値を指定しない場合は引数にrequiredまたは?をつけます。requiredで指定した引数は必須となり、?で指定した引数はオプション引数となります。

名前付き引数の関数の呼び出し

String message = say(msg: 'Hello World', from: 'Alex');

名前付き引数には引数名: 値で関数に値を渡します。

?またはデフォルト値を指定した名前付き引数は省略できます。

デフォルト値を指定

void main() {
  String message = say(msg: 'Hello World', from: 'Alex');
  print(message);
}

String say({required String msg, String from = '匿名', String? to = '匿名'}) {
  var result = 'メッセージ:$msg';

  result = '$result, From $from';
  result = '$result, To $to';
  return result;
}

//結果
//メッセージ:Hello World, From Alex, To 匿名

名前付き引数にデフォルト値を指定する場合は=を使用します。

requiredを使用している名前付き引数にはデフォルト値を指定できません。

位置引数と名前付き引数を一緒に使用できる

void main() {
  String message = say('Hello World', from: 'Alex');
  print(message);
}

String say(String msg, {String? from, String? to}) {
  var result = 'メッセージ:$msg';
  if (from != null) {
    result = '$result, From $from';
  }
  if (to != null) {
    result = '$result, To $to';
  }
  return result;
}

関数のコンストラクタでは位置引数(Positional Parameter)と名前付き引数の両方を使用可能です。

位置引数を名前付き引数と一緒に使用する場合、位置引数の後で名前付き引数を記述します。FlutterのTextクラスでは位置引数と名前付き引数の両方が使用されています。

一緒に読みたい

参考

  • URLをコピーしました!
目次