web-dev-qa-db-fra.com

Ajouter des méthodes ou des valeurs à énumérer dans dart

Dans Java lorsque vous définissez une énumération, vous pouvez faire quelque chose de semblable au suivant. Est-ce possible dans Dart?

enum blah {
  one(1), two(2);
  final num value;
  blah(this.value);
}
20
Digital Deception

Les énumérations de fléchettes sont utilisées uniquement pour les cas les plus simples. Si vous avez besoin d'énumérations plus puissantes ou plus flexibles, utilisez des classes avec des champs const statiques comme indiqué dans https://stackoverflow.com/a/15854550/217408

De cette façon, vous pouvez ajouter tout ce dont vous avez besoin.

22
Günter Zöchbauer

Nan. Dans Dart, les énumérations ne peuvent contenir que les éléments énumérés:

enum Color {
  red,
  green,
  blue
}

Cependant, chaque élément de l'énumération est automatiquement associé à un numéro d'index:

print(Color.red.index);    // 0
print(Color.green.index);  // 1

Vous pouvez obtenir les valeurs par leurs numéros d'index:

print(Color.values[0] == Color.red);  // True

Voir: https://www.dartlang.org/guides/language/language-tour#enums

12
Argenti Apparatus

Ce n'est peut-être pas "Effective Dart", j'ajoute une méthode statique à l'intérieur d'une classe Helper (il n'y a pas d'objet compagnon dans Dart).

Dans ton color.Dart fichier

enum Color {
  red,
  green,
  blue
}

class ColorHelper{

  static String getValue(Color color){
    switch(color){
      case Color.red: 
        return "Red";
      case Color.green: 
        return "Green";
      case Color.blue: 
        return "Blue";  
      default:
        return "";
    }
  }

}

Étant donné que la méthode se trouve dans le même fichier que l'énumération, une seule importation suffit

import 'package:.../color.Dart';

...
String colorValue = ColorHelper.getValue(Color.red);
10
Raymond Chenon