Что это?
Аннотации — это специальные метки (метаданные), которые можно добавлять к классам, методам, переменным и другим элементам кода. Они не изменяют сам код напрямую, но дают дополнительную информацию компилятору, инструментам или фреймворкам.
Пример:
class Person {
final String name;
const Person(this.name);
}
@deprecated // помечает метод как устаревший
void oldMethod() {
print("Этот метод больше не рекомендуется использовать");
}
@override // указывает, что метод переопределяет родительский
String toString() => "Person";📍Встроенные
@override — помечает метод, который переопределяет родительский@deprecated — помечает элемент как устаревший@pragma — специальные инструкции для VM (например, @pragma('vm:entry-point'))📍Из пакета meta
@immutable — класс неизменяемый (все поля final)@required — аннотация для обязательных параметров (устарела с введением модификатора required, который теперь указывается прямо в объявлении параметра)@protected — метод/поле должно использоваться только внутри самого класса или подклассов@visibleForTesting — элемент предназначен только для тестов@visibleForOverriding — метод/поле предназначено для переопределения@mustCallSuper — при переопределении метода нужно обязательно вызвать super@nonVirtual — метод не может быть предопределен@sealed — класс нельзя наследовать за пределами своей библиотеки@doNotStore — нельзя хранить ссылку на объект (например, BuildContext)@factory — метод/конструктор должен возвращать новый объект каждый раз📍Для генерации кода (через build_runner)
@JsonSerializable — для генерации JSON-сериализации (json_serializable)@JsonKey — настройка маппинга конкретного поля в JSON@HiveType / @HiveField — для сериализации в Hive@Freezed и связанные (@freezed) — генерация immutable-классов и union typesВ прошлом посте Аня рассказывала о собеседованиях, так что давайте проверим ваши знания про аннотации. Чур не подсматривать!🫣
