所以我有这个标记小部件,可用于放置图像。它将使用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
),
但是,如果屏幕尺寸不同,标记的位置也会不同。无论屏幕大小如何,如何将其固定在一个地方?是因为坐标受不同屏幕尺寸的影响吗?
答案 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