Добавить методы или значения в перечисление в дротике
В java, когда вы определяете перечисление, вы можете сделать что-то похожее на следующее. Возможно ли это в Дарте?
enum blah {
one(1), two(2);
final num value;
blah(this.value);
}
Ответы
Ответ 1
Переносы Дарта используются только для простейших случаев. Если вам нужны более мощные или более гибкие перечисления, используйте классы со статическими константными полями, как показано на fooobar.com/questions/187494/...
Таким образом вы можете добавить все, что вам нужно.
Ответ 2
Нету. В Dart перечисления могут содержать только перечисленные элементы:
enum Color {
red,
green,
blue
}
Однако каждому элементу в перечислении автоматически присваивается порядковый номер:
print(Color.red.index); // 0
print(Color.green.index); // 1
Вы можете получить значения по их индексам:
print(Color.values[0] == Color.red); // True
См.: https://www.dartlang.org/guides/language/language-tour#enums.
Ответ 3
Это может быть не "Эффективный дротик", я добавляю статический метод в класс Helper (в Dart нет объекта-компаньона).
В вашем файле color.dart
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 "";
}
}
}
Поскольку метод находится в том же файле, что и enum, достаточно одного импорта
import 'package:.../color.dart';
...
String colorValue = ColorHelper.getValue(Color.red);