【发布时间】:2018-08-18 23:38:45
【问题描述】:
我正在尝试使用GestureDetector 制作一个可以响应屏幕上任意位置点击的 Flutter 应用。这是我的代码:
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "App",
home: MyScreen(),
);
}
}
class MyScreen extends StatefulWidget {
@override
State createState() => MyScreenState();
}
class MyScreenState extends State<MyScreen> {
String _text = "Hello";
@override
Widget build(BuildContext context) {
_onTapUp(TapUpDetails details) {
var x = details.globalPosition.dx;
var y = details.globalPosition.dy;
print("tap up " + x.toString() + ", " + y.toString());
setState(() {
_text = "Hello world";
});
}
return GestureDetector(
onTapUp: _onTapUp,
child: Scaffold(
appBar: AppBar(
title: Text("App")
),
body: Text(_text),
),
);
}
}
但是,当我运行该应用程序时,模拟器底部会出现一个错误,上面写着BOTTOM OVERFLOWED BY Infinity PIXELS。该应用程序似乎正在运行,但底部的错误令人眼花缭乱。我该如何解决?
【问题讨论】:
-
无法复制。我复制粘贴了你的代码,没有溢出。
-
@Darky 我的错误 - 代码不是完全最新的。但是,很难调试此错误,因为它会间歇性出现,并且需要几轮重建/重新运行才能使在模拟器上运行的应用程序真正更新。
-
我遇到了类似的问题(但不是无限像素)。我最终来到stackoverflow.com/a/49614547/5766375 并使用了这个解决方案,我用 SingleChildScrollView 包裹了我的专栏。
-
也许你可以看看这个link :)
-
我已经尝试过您的代码,它似乎工作正常。我点击屏幕的所有内容都会正确返回
x和y坐标。如果有机会,您能否提供一个屏幕截图并至少突出显示屏幕中出现该错误的区域?
标签: flutter dart flutter-layout