Поля и конструктор enum в Dart
У enum может быть конструктор с параметрами -
как у обычного класса. Значения параметров
задают отдельно для каждой константы в круглых скобках
после ее имени:
enum Color {
red(0xFF0000),
green(0x00FF00),
blue(0x0000FF);
const Color(this.rgb);
final int rgb;
}
print(Color.red.rgb);
Поля, объявленные в конструкторе enum, доступны у
любой константы как у обычного объекта. Порядок констант
в теле enum совпадает с порядком в values и
с полем index:
enum Size {
small(10),
medium(50),
large(200);
const Size(this.maxItems);
final int maxItems;
}
print(Size.medium.maxItems);
print(Size.large.index);
Параметры конструктора можно комбинировать с обычными полями в теле enum, если одной константе нужна дополнительная логика инициализации:
enum Currency {
usd("USD", "\$"),
eur("EUR", "E"),
rub("RUB", "R");
const Currency(this.code, this.sign);
final String code;
final String sign;
}
var c = Currency.eur;
print("${c.sign} ${c.code}");
Объявите enum HttpStatus с полем
code: ok - 200,
notFound - 404, serverError -
500.
Выведите код для HttpStatus.notFound.
Объявите enum Discount с полем
percent: none - 0,
sale - 10, mega - 30.
Дана переменная:
var d = Discount.sale;
Выведите значение percent.