Поместить маркер на основе координаты для другого размера экрана (Flutter) - PullRequest
1 голос
/ 08 января 2020

Так что у меня есть этот виджет маркера, который можно использовать для размещения на изображениях. Он будет использовать смещение, чтобы установить координаты для x и y

Offset position = Offset(0.0, 0.0);

После этого, если я захочу разместить виджет, это будет что-то вроде этого

double baseWidth = window.physicalSize.width;
double baseHeight = window.physicalSize.height;

double newWidth = MediaQuery.of(context).size.width;
double newHeight = MediaQuery.of(context).size.height;

double newX = (newWidth*630)/baseWidth;
double newY = (newHeight*380)/baseHeight;

MarkerBox(
   Offset(newX, newY,
   'Box One',
   Colors.blueAccent,
   Image.asset("assets/marker_red.png",
      height: 40, width: 40, fit: BoxFit.cover),
   width / 4.5
),

Однако, если другой экран размер, маркер будет размещен по-разному. Как мне сделать это c в одном месте независимо от того, какой размер экрана? Это связано с тем, что на координаты влияет размер экрана?

1 Ответ

2 голосов
/ 08 января 2020

Вы можете получить ширину и высоту экрана с помощью:

  • double new_width = MediaQuery.of(context).size.width;
  • double new_height = MediaQuery.of(context).size.height;

И после этого вы может сделать Правило Дерева . Учитывая "базовую позицию", называемую (base_x, base_y) для "базового разрешения", называемого (base_width, base_height), вы можете получить новое (new_x, new_y) для "нового разрешения", заданного кодом выше.

  • new_x = (new_width*base_x)/base_width
  • new_y = (new_height*base_y)/base_height
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...