我正在尝试使用Flutter设计一个虚拟陈列室。我的计划是使用实体陈列室中的照片,并确定照片中的元素。当用户点击一个项目时,相应的详细信息将显示在下面。在单个设备上完成这项工作相当清楚,但是,我在弄清楚如何在不同设备上识别照片中的相同位置时遇到了麻烦。
通过使用GestureDetector,我可以捕获用户点击的位置,但是该位置由硬件反映出来,因此所得到的位置在设备之间不一致。
class _ButtonTestState extends State<ButtonTest> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: SafeArea(
child: Center(
child: Column(children: [
GestureDetector(
//onTap: () =>onTap(),
onTapDown: (TapDownDetails details) => onTapDown(details),
//onTapUp: (TapUpDetails details) => onTapUp(details),
child: Image.asset('images/livingroom.jpeg',
fit: BoxFit.cover,
),
),
])))));
}
}
void onTapDown(TapDownDetails details) {
var x = details.globalPosition.dx;
var y = details.globalPosition.dy;
var xL = details.localPosition.dx;
var yL = details.localPosition.dy;
print("tap down global" + x.toString() + ", " + y.toString());
print("tap down local" + xL.toString() + ", " + yL.toString());
}
在平板电脑上,右下角返回: I / Flutter(5501):向下点击全局797.9736328125,622.4609375 I / Flutter(5501):点按本地797.9736328125、622.4609375
在电话上,右下角返回: I / Flutter(9095):全局下移409.40708705357144,330.82589285714283 I / Flutter(9095):点击本地409.40708705357144、330.82589285714283
谢谢您的帮助。