Почему доступ к свойствам MediaQuery в триггере виджета Flutter перестраивается только в виджете, обращающемся к нему, аAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему доступ к свойствам MediaQuery в триггере виджета Flutter перестраивается только в виджете, обращающемся к нему, а

Сообщение Anonymous »

Я работаю над проектом Flutter, в котором я получаю доступ к свойствам MediaQuery (например, MediaQuery.viewInsetsOf(context).bottom) внутри виджета, назовем его Widget2. >
Widget2 является дочерним элементом Widget1, и я заметил, что всякий раз, когда значение MediaQuery.viewInsetsOf(context).bottom изменяется (например, когда клавиатура отображается или скрывается), это вызывает метод сборки Widget2, но не его родительский элемент Widget1. Другими словами, при изменении значения свойства перестраивается только Widget2, а не виджеты, находящиеся над ним в дереве.
Мой вопрос:
  • Как Flutter определяет, какой виджет нужно перестроить при изменении свойства MediaQuery?
    < /li>
    Почему перестраивается только виджет, напрямую обращающийся к значению MediaQuery, а не его родительские или родительские виджеты?
Интересно, как это работает под капотом. Любая информация о том, как Flutter оптимизирует процесс восстановления в таких случаях, будет полезна!
Дополнительная информация:
  • Версия Flutter: 3.24.3
  • Пример кода:
class Widget1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Widget2();
}
}

class Widget2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
double bottomPadding = MediaQuery.viewInsetsOf(context).bottom;
return Container(
padding: EdgeInsets.only(bottom: bottomPadding),
child: Text("Hello World"),
);
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... ebuilds-on
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»