Это потому, что вы используете отступы от краев с
Positioned(
child: Transform.rotate(
angle: 180,
child: UNOcard(UNOcardData(CardTypes.BACK)),
),
top: 100,
left: 65,
),
. Этот верх означает, что он будет позиционироваться на 100 единиц сверху. На самом деле вам нужно некоторое процентное смещение от центра. Вы можете сделать это так:
Positioned.fill(
child: Align(
// (0, 0) is the center, (1, 1) is right bottom, (-1, -1) is left top and so on
alignment: Alignment(0.25, 0.25),
child: YOUR_WIDGET
)
);
Для более отзывчивого пользовательского интерфейса вы можете получить screen_sizes с помощью MediaQuery.of (context) или использовать такой пакет, как flutter_screenutil , чтобы масштабируйте пользовательский интерфейс в соответствии с образцом, например, экран 1080x1920.