🍇

【Flutter/Dart】メソッドの引数まとめ

に公開

はじめに

Dartのメソッドの引数(基本型、オプション引数、名前付き引数)についてまとめました。

環境

$ flutter --version
Flutter 3.13.0 • channel stable • https://github.com/flutter/flutter.git
Framework • revision efbf63d9c6 (5 weeks ago) • 2023-08-15 21:05:06 -0500
Engine • revision 1ac611c64e
Tools • Dart 3.1.0 • DevTools 2.25.0

基本的な引数

例として、受け取った引数をprint()で表示するprofile関数を定義します。
String型の引数nameの値を表示しています。

void profile(String name) {
  print("name: ${name}");
}

void main() {
  profile('山田');
}

実行結果

name: 山田

オプション引数

引数を[]で囲むと、引数の指定が省略可能なオプション引数を使用できます。
必須の引数は必ずオプション引数の前に記述します。

void profile(String name, [int? age]) {
  print("name: ${name}");
  print("age: ${age}");
}

void main() {
  profile('山田');
}
name: 山田
age: null

名前付き引数

引数を{}で囲むと、名前付きの引数を使用できます。
メソッドを呼び出す際に引数の名前(サンプルコードだとname:)がないとエラーが出ます。
名前付き引数が必須でない場合、型に?演算子をつけてNull許容型で定義する必要があります。
必須の場合は型の前にrequiredを付加します。型はNull許容型でなくても大丈夫です。

名前付き引数が必須ではない場合

void profile({String? name, int? age}) {
  print("name: ${name}");
  print("age: ${age}");
}

void main() {
    profile(name: '山田', age: 20); // OK
    profile(name: '山田');          // OK
    profile('山田', 20);            // NG
}

名前付き引数が必須の場合

void profile({required String name, required int age}) {
  print("name: ${name}");
  print("age: ${age}");
}

void main() {
    profile(name: '山田', age: 20); // OK
    profile(name: '山田');          // NG
    profile('山田', 20);            // NG
}

Discussion