根据坐标放置标记以适应不同的屏幕尺寸(抖动)

时间:2020-01-08 03:35:15

标签: flutter dart coordinates

所以我有这个标记小部件,可用于放置图像。它将使用offset设置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
),

但是,如果屏幕尺寸不同,标记的位置也会不同。无论屏幕大小如何,如何将其固定在一个地方?是因为坐标受不同屏幕尺寸的影响吗?

1 个答案:

答案 0 :(得分:4)

您可以使用以下方法获取屏幕的宽度和高度:

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

然后,您可以制作一个Rule of Tree。给定一个名为(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
相关问题