TGViewer
Flutter Friendly Flutter Friendly @flutterfriendly · 996 subscribers
Post #354 808
💭Привет! Это Анна, Flutter Team Lead Friflex

Сегодня поговорим про механизмы ограничения доступа объектов в Dart. Простыми словами — какие есть варианты подсветить, что объект не должен использоваться извне.

1️⃣ Начнем с банального — использования «


final String _privateData;

void _doExample() {}


Символ «_» в начале названия говорит о том, что объект может использоваться только в рамках текущей библиотеки.

Кроме того, что он самый известный, он — фактически единственный действительно ограничивающий. Проект не сможет быть скомпилирован, пока приватный объект будет использоваться вне допустимого участка кода.

2️⃣ @protected
Аннотация @protected говорит о том, что объект доступен только внутри класса и в классах наследниках.

Здесь очень важно понимать, что аннотация никак не ограничивает компиляцию и работу программы. Единственное, что вы получите при неправильном использовании защищенного объекта — замечание анализатора invalid_use_of_protected_member


// файл parent.dart

class Parent {
@protected
void doProtected() {}
}
...
// файл child.dart

class Child extends Parent {
void doExample() {
doProtected(); // допустимо
}
}

void main() {
final parent = Parent();

parent.doProtected(); // вызывает предупреждение анализатора
}


3️⃣ @visibleForTesting
Еще одна ограничивающая аннотация. Она как бы говорит — «да, я публичный, но только для того, чтобы быть доступным в тестах». Будет точно полезно для тех, кто покрывает проект тестами


// файл lib/parent.dart

class Parent {
@visibleForTesting
void doExample() {}
}
...
// файл lib/main.dart

void main() {
final parent = Parent();
parent.doExample(); // вызывает предупреждение анализатора invalid_use_of_visible_for_testing_member
}
...
// файл test/parent_test.dart

void main() {
test('Тестируем @visibleForTesting', () {
final test = Parent();
test.doExample(); // допустимо
});
}


Важно понимать — хотя реальное ограничение всего одно, аннотации тоже не стоит списывать со счетов. Они подсвечивают намерение разработчика, обозначают границы ответственности и помогают поддерживать архитектурную дисциплину.

❤️ — если было полезно
  • ❤ 14
  • 👍 8
  • 🔥 4
  • 🤡 3
  • 🤩 1
More from @flutterfriendly
  1. May 14, 2026👀Какой сложный вопрос или тема по Flutter вас сейчас беспокоят? Может, задача не идет, ба…
  2. Apr 17, 2026💭Привет! Это Роза, Flutter-разработчица Friflex! Уверена, многие из вас знакомы с Dart De…
  3. Apr 8, 2026Привет, друзья! Делимся нашей страничкой на Хабре, чтобы всегда оставаться на связи. Там е…
  4. Apr 3, 2026🌸Апрель в календаре и на экране Весна зовет обновлять визуальное: убирать темные темы и в…
  5. Apr 1, 2026Всегда с нетерпением ждем этого дня, чтобы сделать подборку ИТ-мемов Пусть поводов для улы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →