В чем разница между double.infinity и MediaQuery? - PullRequest
0 голосов
/ 02 февраля 2019

Чтобы занять всю ширину или высоту, я использую double.infinity, но, просматривая некоторые образцы флаттера, я заметил, что многие люди используют MediaQuery.of(context).size.width или height.Я просмотрел документы, но нет никаких различий, упомянутых между этими двумя и когда использовать тот, который оба позволяют одну и ту же функцию.Они специфичны для определенных виджетов?

1 Ответ

0 голосов
/ 02 февраля 2019

Разницу можно суммировать в:

  • Я хочу быть настолько большим, насколько позволяет мой родитель (double.infinity)
  • Я хочу быть таким же большим, как экран (MediaQuery).

Обычно вы хотите использовать double.infinity, но это не всегда возможно.

Некоторые виджеты позволяют своим детям быть такими же большими, как они хотят.(Column, ListView, OverflowBox ...).В этой ситуации использование double.infinity создает парадокс:

  • Родитель допускает любой размер
  • Ребенок хочет наибольший размер, допустимый родителем

Использование MediaQuery в этих ситуациях плохо, хотя.Вам редко захочется это делать, если вы не создаете виджет, похожий на Scaffold.

Вот где пригодятся такие виджеты, как IntrinsincHeight.Эти виджеты способны разрешить парадокс и, следовательно, имеют корректную компоновку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...