Своя пометка в Dart
Свой тип пометки описывают обычным классом с
const-конструктором и полями только для
данных. Логики в теле нет - анализатор связывает
значения параметров с объявлением. Строковый
параметр удобен для короткой подписи команды или
модуля. Отдельного перечисления срока хранения
в Dart нет.
Объявление метки с одним строковым полем выглядит так:
class Owner {
final String team;
const Owner(this.team);
}
Перед функцией указывают имя метки и значение параметра в скобках. Анализатор связывает подпись с объявлением функции:
class Owner {
final String team;
const Owner(this.team);
}
@Owner('billing')
void chargeInvoice() {
print('charge');
}
Тот же тип можно повесить на класс - тогда пометка
относится ко всему типу, а не к одной команде.
Пример с классом Post и конфигурацией шлюза:
class Owner {
final String team;
const Owner(this.team);
}
@Owner('platform')
class GatewayConfig {
final String endpoint;
GatewayConfig(this.endpoint);
}
void runSample() {
GatewayConfig cfg = GatewayConfig('https://api.local');
print(cfg.endpoint);
}
Метку Todo с полем note можно поставить
на метод, поле или класс - форма та же:
class Todo {
final String note;
const Todo(this.note);
}
@Todo('later')
void show() {}
Объявите метку с параметром layer типа
String. Повесьте ее на функцию записи
лога и на класс настроек очереди с одним
строковым полем. Значения слоя должны
различаться.
В классе Employee создайте экземпляр
класса настроек из предыдущей задачи и
выведите его строковое поле.