Help us understand the problem. What is going on with this article?

【Dartメモ】Dartの名前付き引数 (Named Parameter)

More than 1 year has passed since last update.

Dartでは名前付き引数(Named Parameter)の利用が可能です. 名前付き引数を利用することで,引数の指定誤りを防ぐことができます.

名前付き引数を使わない場合

下記ではPersonクラスを作成し,コンストラクタに名字(last)と名前(first)を引数として渡している.
名前付き引数を利用しない場合,1番目が名字なのか,2番目が名字なのかわからず後々エラーの原因になる可能性がある.

void main() {
  var person1 = new Person('Jordan','Micheal');

  print(person1);
}

class Person {
  String last;
  String first;

  Person(this.last, this.first);

  toString() {
    return '$last, $first';
  }
}

名前付き引数を使う場合

下記の通り名前付き引数を利用することで,コンストラクタで定義されている引数の順番と異なっていても,正しく初期化ができる.

void main() {
  var person1 = new Person(first:'Micheal',last:'Jordan');

  print(person1);
}

class Person {
  String last;
  String first;

  Person({this.last, this.first});

  toString() {
    return '$last, $first';
  }
}

引数を必須にする

上記は引数を省略可能であったため,meta.dartをimportし,@requiredのアノテーションを引数に付与することで,必須パラメターとなる.

import 'package:meta/meta.dart';

void main() {
  var person1 = new Person(first:'Micheal',last:'Jordan');

  print(person1);
}

class Person {
  String last;
  String first;

  Person({@required this.last, @required this.first});

  toString() {
    return '$last, $first';
  }
}
akatsukaha
docomo Developer supportの企画・運用をしています。
https://dev.smt.docomo.ne.jp/
nttdocomo
企業や開発者向けにドコモが保有する技術に限らず、様々なAPIを提供するサービス
https://dev.smt.docomo.ne.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away