Kimama-IT

ITに関する覚書き

【Flutter/Dart】classの使用例

公式ページのイントロダクションをもとにした使用例のメモです。

dart.dev

void main() {
  var voyager = Spacecraft('Voyager I', DateTime(1977, 9, 5));
  print(voyager.name);
  print(voyager.launchDate);
  print(voyager.launchYear);
  voyager.describe();
  print('------------------------------');
  var voyager3 = Spacecraft.unlaunched('Voyager III');
  print(voyager3.name);
  print(voyager3.launchDate);
  print(voyager3.launchYear);
  voyager3.describe();
}

class Spacecraft {
  String name;
  DateTime? launchDate;

  // 読み取り専用の非最終プロパティ
  int? get launchYear => launchDate?.year;

  // コンストラクタで、メンバに代入するための糖衣構文を持つ。
  Spacecraft(this.name, this.launchDate) {
    // 初期化コードはここに書く。
  }

  // デフォルトのコンストラクターに転送する名前付きコンストラクター。
  Spacecraft.unlaunched(String name) : this(name, null);

  // メソッド。
  void describe() {
    print('Spacecraft: $name');
    // タイプ・プロモーションはゲッターでは機能しない。
    var launchDate = this.launchDate;
    if (launchDate != null) {
      int years = DateTime.now().difference(launchDate).inDays ~/ 365;
      print('Launched: $launchYear ($years years ago)');
    } else {
      print('Unlaunched');
    }
  }
}