Kimama-IT

ITに関する覚書き

【Flutter/Dart】enumの使用例

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

dart.dev

void main() {
  print('-----Planet.values-----');
  print(Planet.values);
  print('');
  print('-----Planet.uranus-----');
  print(Planet.uranus);
  print('');
  print('-----Planet.uranus.name-----');
  print(Planet.uranus.name);
  print('');
  print('-----Planet.uranus.planetType-----');
  print(Planet.uranus.planetType);
  print('');
  print('-----Planet.uranus.planetType.name-----');
  print(Planet.uranus.planetType.name);
  print('');
  print('-----Planet.uranus.moons-----');
  print(Planet.uranus.moons);
  print('');
  print('-----Planet.uranus.hasRings-----');
  print(Planet.uranus.hasRings);
  print('');
  print('-----Planet.uranus.isGiant-----');
  print(Planet.uranus.isGiant);
  print('');

  print('/////giant planet or not/////');
  if (Planet.uranus.isGiant) {
    print('${Planet.uranus.name} is a "giant planet".');
  }
  print('');

  final planets = Planet.values;
  for (var p in planets) {
    if (!p.isGiant) {
      print('${p.name} is not a "giant planet".');
    } else {
      print('${p.name} is a "giant planet".');
    }
  }
}

enum PlanetType { terrestrial, gas, ice }

/// 太陽系のさまざまな惑星を列挙する列挙型
/// およびそのプロパティの一部。
enum Planet {
  mercury(planetType: PlanetType.terrestrial, moons: 0, hasRings: false),
  venus(planetType: PlanetType.terrestrial, moons: 0, hasRings: false),
  // ···
  uranus(planetType: PlanetType.ice, moons: 27, hasRings: true),
  neptune(planetType: PlanetType.ice, moons: 14, hasRings: true);

  /// 定数生成コンストラクター
  const Planet(
      {required this.planetType, required this.moons, required this.hasRings});

  /// すべてのインスタンス変数はfinal変数です
  final PlanetType planetType;
  final int moons;
  final bool hasRings;

  /// 強化された列挙型はゲッターやその他のメソッドをサポートします
  bool get isGiant =>
      planetType == PlanetType.gas || planetType == PlanetType.ice;
}