Публикация моего комментария в качестве ответа на тот случай, если он работает, и нет более качественных ответов. Пожалуйста, проголосуйте и отметьте как ответили, если это так. : -)
Вы можете попробовать поэкспериментировать с MediaQuery.of, чтобы определить размер устройства (высоту и ширину), а затем использовать эти значения для масштабирования параметров положения виджетов с позиционированием вверх или вниз от ваших «базовых» размеров. , Теоретически это должно (может) соответствовать тому, как масштабировалось фоновое изображение. Возможно, потребуется также масштабировать размер виджетов с позиционированием.
Обновление относительно вашего комментария:
Не совсем. Я имею в виду, что вам нужно будет запустить MediaQuery.of на устройстве, которое вас устраивает в макете пользовательского интерфейса, и записать ширину и высоту этого устройства. Затем вы используете эти ширину и высоту в своем приложении и сравниваете эти «базовые» значения с теми значениями, которые вы получаете при запуске приложения на других устройствах.
Итак: разделите ширину другого устройства на baseline-device-width, чтобы получить коэффициент масштабирования ширины. Разделите other-device-height на baseline-device-height, чтобы получить коэффициент масштабирования высоты.
Затем используйте эти коэффициенты масштабирования для «масштабирования» ширины позиционированных виджетов (position-widget-width, умноженной на width-scaling- factor) и height (position-widget-height, умноженное на height-scaling-factor) и положение на экране (вам придется поиграться со значениями позиционирования).
Звучит неопрятно, но это просто математика.
Как я уже сказал, может не сработать или не самое элегантное решение. Существует так много разных устройств, что вы никогда не сможете полностью протестировать это. Возможно, вам нужно переосмыслить ваш интерфейс. Может быть, у некоторых людей есть идеи по этому поводу.