Выбор ответа Middle Вёрстка и constraints обновлено

Flutter: MediaQuery.sizeOf против MediaQuery.of

Вопрос

Почему в build предпочитают MediaQuery.sizeOf(context) вместо MediaQuery.of(context).size?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: sizeOf подписывает только на размер, of на любые изменения MediaQuery. С Flutter 3.10 у MediaQuery есть точечные методы (sizeOf, paddingOf, viewInsetsOf), которые используют InheritedModel и подписывают только на нужный аспект.

Варианты ответа

  1. MediaQuery.of устарел и удалён в Flutter 3, остались только точечные методы
  2. sizeOf подписывает только на размер, of на любые изменения MediaQueryправильный ответ
  3. sizeOf возвращает физические пиксели, а of(context).size логические
  4. sizeOf работает без MaterialApp и MediaQuery выше, а of требует их

Разбор

С Flutter 3.10 у MediaQuery есть точечные методы (sizeOf, paddingOf, viewInsetsOf), которые используют InheritedModel и подписывают только на нужный аспект. MediaQuery.of не удалён, но перестраивает виджет при появлении клавиатуры, изменении отступов и т.д. Оба возвращают логические пиксели и оба требуют MediaQuery выше.

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

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

Термины по теме