как вы, возможно, знаете, в приложении флаттера есть два типа размера (физический, логический). для полей и отступов, если мы хотим, чтобы приложение было отзывчивым, мы должны получить размер контекста (ширину, высоту). по какой-то причине я не хочу использовать MediaQuery.of(context).size, поэтому я использую
Size screenSize = WidgetsBinding.instance.window.physicalSize;
double width = screenSize.width;
double height = screenSize.height;
в таком случае размер является физическим и не может использоваться, как раньше, для отступов и полей с краями. то, что я прошу, - это способ либо изменить размер физического пикселя на логический без использования контекста и MediaQuery, либо способ использовать физические пиксели для создания адаптивного поля и заполнения.
заранее спасибо.
Я попытался получить соотношение с результатами тестирования, оно различается между устройствами, поэтому мы не можем использовать статическое соотношение. Соотношение не является соотношением высоты/ширины физического размера.





Вы можете получить размер экрана без context следующим образом:
var size = MediaQueryData.fromWindow(WidgetsBinding.instance.window).size;
теперь, если вы напечатаете этот size, вы увидите, что он равен размеру, который вы получаете от MediaQuery с context.
Да, это было полезно, но я использовал другой аналогичный способ, используя MediaQueryData.fromWindow(WidgetsBinding.instance.window).devicePixelRatio и разделив физический размер на это соотношение, в конечном итоге они оба работают, но я думаю, что ваш код намного лучше, потому что он использует меньше кода строки спасибо!