Разницу можно суммировать в:
- Я хочу быть настолько большим, насколько позволяет мой родитель (double.infinity)
- Я хочу быть таким же большим, как экран (MediaQuery).
Обычно вы хотите использовать double.infinity
, но это не всегда возможно.
Некоторые виджеты позволяют своим детям быть такими же большими, как они хотят.(Column
, ListView
, OverflowBox
...).В этой ситуации использование double.infinity
создает парадокс:
- Родитель допускает любой размер
- Ребенок хочет наибольший размер, допустимый родителем
Использование MediaQuery
в этих ситуациях плохо, хотя.Вам редко захочется это делать, если вы не создаете виджет, похожий на Scaffold
.
Вот где пригодятся такие виджеты, как IntrinsincHeight
.Эти виджеты способны разрешить парадокс и, следовательно, имеют корректную компоновку.