出于演示目的,我有一个应用,该应用现在在其中心有一个容器,在我的容器中,我有一个文本“ O”,整个容器都包裹在GestureDetector小部件下,并且我使用onVerticalDragDown方法来查找找出文字“ O”的确切位置。然后点击文本,它将在终端上打印一些内容。我知道我可以使用Inkwell小部件在Text上使用on tap方法,但是如果要有图像,并且在图像中,我想使特定的部分成为可轻敲的。 现在的问题是,Android Nexus 5的位置与iPhone X不同,这很明显,如您所见 对于Android: For Android
现在,我在启动功能中对位置进行了硬编码,以打印“已轻按” 声明。 现在来问我一个问题,如何在任何设备android或ios或任何设备上使用屏幕的位置使文本“ O”可点击? 这是我的代码:
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
Offset _startPos;
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(),
);
}
}
launch() {
if ((_startPos.dx >= 180.5 && _startPos.dx < 182.0) &&
(_startPos.dy >= 335.0 && _startPos.dx < 340.0)) {
print("Tapped");
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Demo"),
),
body: GestureDetector(
onVerticalDragDown: (details) {
_startPos = details.globalPosition;
print(_startPos);
},
onTap: () {
launch();
},
child: Center(
child: Container(
width: 100.0,
height: 100.0,
color: Colors.cyan,
child: Text(
"O",
style: TextStyle(fontSize: 25.0),
),
alignment: Alignment(0.0, 0.0),
),
)));
}
}
我的屏幕: