Карточка Junior Dart: типы и null-safety обновлено

Зачем нужен late

Вопрос

Для чего используют late в Dart? Приведите два сценария.

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

1) Поле ненулевого типа, которое нельзя задать в конструкторе, но гарантированно задают до использования (например, в initState). 2) Ленивая инициализация: late final x = compute(); вычисляется при первом чтении.

Ответ

  1. Поле ненулевого типа, которое нельзя задать в конструкторе, но гарантированно задают до использования (например, в initState). 2) Ленивая инициализация: late final x = compute(); вычисляется при первом чтении. Цена: проверка переносится в рантайм, чтение до присвоения бросает LateInitializationError.

Разбор

Во Flutter классический пример: late final AnimationController _c; в State.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.