TGViewer
Сёрф Flutter-разработка Сёрф Flutter-разработка @surf_flutter · 3.2K subscribers
Post #179 1.7K
Late нам друг или враг? ⚠️
Иногда — враг

Вместе с Sound null safety в 2021 году появилось новое ключевое слово late.

Что такое late

Согласно документации, его можно использовать для двух случаев:

1️⃣ Декларирование non-nullable переменной, которая обязательно (помните об этом ⚠️) должна быть инициализирована позже.

2️⃣ Ленивая, или lazy-инициализация переменных: она происходит только при первом обращении.

Немного подробнее про использовании late для lazy-инициализации

Lazy-инициализацию используют по двум причинам:

🔹 Когда нужен доступ к this для инициализации объекта. Например, для создания AnimationController нам нужно передать this в параметр vsync, т. к. контроллеру нужен TickerProvider. В этом случае мы вынуждены будем использовать late: по-другому никак.

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

Правда, тут есть нюансы. Подробнее на картинках 👆👆👆

➡️ Давайте представим: вы создаёте стрим и хотите сразу создать слушателя к нему.

Вроде бы все правильно и «по-взрослому», но… вы ничего не услышите 👂— переменная sub так и останется «late», она по-прежнему не инициализирована.

➡️ Чтобы исключить такую ситуацию, нужно определить подписку так, как на третьей картинке.

Well done! В таком виде всё будет работать. Хорошей практикой ещё будет сделать controller и sub приватными, если это возможно, но это уже тонкости.

👉 Живой пример на DartPad
  • 👍 17
  • ❤ 2
  • 🔥 2
More from @surf_flutter
  1. Aug 20, 2026🐦 Ищем Flutter-разработчика нового поколения. Если ты активно работаешь с AI-агентами, ис…
  2. Aug 18, 2026🧸 Продолжаем серию постов «Флаттер для самых маленьких». В новой части поговорим про меха…
  3. Aug 7, 2026🐳 Экран во Flutter держится на трёх китах, и если разобраться в их взаимодействии, рендер…
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 →