Написание собственных аннотаций
Добавляйте метаданные к объявлениям
«Написание собственных аннотаций» — бесплатный урок Dart Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.
Аннотации — это классы
Пользовательская аннотация — это обычный класс. Когда Вы пишете @MyTag, Вы ссылаетесь на экземпляр этого класса как на метаданные. 🏷️
Объявление класса
Начните с объявления обычного класса для хранения метаданных. Здесь простая аннотация Todo позже будет хранить сообщение и ответственного.
class Todo {
final String message;
const Todo(this.message);
}Правило конструктора-константы
Значения аннотаций должны быть константами времени компиляции, поэтому конструктор должен быть константным. Без этого класс нельзя использовать как аннотацию.
Применение аннотации
Используйте префикс @ с константным созданием объекта. Эта метка @Todo документирует работу, которую ещё нужно выполнить в расположенном ниже методе.
@Todo('Add validation')
void saveForm() {}Хранение нескольких полей
Аннотация может содержать сколько угодно полей. Используйте в конструкторе именованные параметры, если хотите, чтобы метки были более ясными и самодокументируемыми.
class Todo {
final String task;
final String who;
const Todo(this.task, this.who);
}Только константные аргументы
Каждый передаваемый аргумент сам должен быть константой. Подходят литералы, константные объекты и значения перечислений, но переменная времени выполнения — нет.
Маркер без аргументов
Иногда Вам нужен только флаг. Константный экземпляр без данных выступает в роли чистого маркера, который прикрепляется к объявлениям.
class Experimental {
const Experimental();
}
const experimental = Experimental();Удобные константы в нижнем регистре
Предоставление экземпляра константы с именем в нижнем регистре позволяет вызывающему коду каждый раз писать аккуратное @experimental вместо @Experimental().
@experimental
void betaFeature() {}Сами по себе они ничего не делают
Как и встроенная, Ваша пользовательская аннотация сама по себе не имеет поведения. Кто-то должен её прочитать, чтобы она стала полезной; об этом мы поговорим далее.
Кто читает аннотации
Важны два читателя: генераторы кода во время сборки и инструменты в стиле отражения. Оба проверяют Ваши метки и работают с найденными метаданными.
Делайте аннотации небольшими
Хорошие аннотации остаются компактными и декларативными. Храните в них обычные данные, а не логику, чтобы любой инструмент мог предсказуемо и безопасно их прочитать.
Быстрая проверка
Что должен иметь класс, чтобы его можно было использовать как аннотацию?
Повторение
Пользовательская аннотация — это класс с константным конструктором. Применяйте её с помощью @, передавайте константные аргументы и позволяйте инструментам прочитать метаданные позже. 🎉
Часто задаваемые вопросы
Урок «Написание собственных аннотаций» бесплатный?
Да — полный текст урока «Написание собственных аннотаций» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.
Чему я научусь в уроке «Написание собственных аннотаций»?
Добавляйте метаданные к объявлениям Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Dart Academy?
Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Написание собственных аннотаций»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Dart Academy?
Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Встроенные аннотации: override, deprecated
- Написание собственных аннотаций
- Генерация кода с build_runner
- json_serializable в действии