Выбор ответа Middle Виджеты и три дерева обновлено
Flutter: когда элемент переиспользуется
Вопрос
При перестроении на том же месте дерева был Text, а стал другой Text с другой строкой. Что сделает Flutter?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Переиспользует элемент и рендер-объект: тип и ключ совпали, обновятся только свойства. Элемент переиспользуется, если Widget.canUpdate(old, new) истинно: совпадают runtimeType и key.
Варианты ответа
- Удалит старый элемент и создаст новый: виджет другой объект, значит и элемент нужен новый
- Переиспользует элемент и рендер-объект: тип и ключ совпали, обновятся только свойстваправильный ответ
- Ничего не сделает: виджеты сравниваются по
==, а у двухTextон совпадает - Перестроит всё дерево приложения, начиная с
MaterialApp, чтобы учесть новую строку
Разбор
Элемент переиспользуется, если Widget.canUpdate(old, new) истинно: совпадают runtimeType и key. Тогда элемент получает новый виджет и обновляет рендер-объект. Пересоздание происходит при другом типе или другом ключе. == у виджетов по умолчанию ссылочное и для этого решения не используется, а перестраивается только помеченное поддерево.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.