【问题标题】:How to resolve bottom overflowed by infinity pixels?如何解决无限像素溢出的底部?
【发布时间】: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 :)
  • 我已经尝试过您的代码,它似乎工作正常。我点击屏幕的所有内容都会正确返回xy 坐标。如果有机会,您能否提供一个屏幕截图并至少突出显示屏幕中出现该错误的区域?

标签: flutter dart flutter-layout


【解决方案1】:

这个问题似乎无法重现。 GestureDetector 上定义的 child 小部件应设置其高度并防止像素溢出。

但如果您需要定义屏幕高度以避免底部溢出,您可以使用LayoutBuilderMediaQuery 获取屏幕尺寸。

【讨论】:

    猜你喜欢
    • 2019-11-21
    • 1970-01-01
    • 2019-10-14
    • 2023-02-03
    • 2021-11-20
    • 2019-11-26
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多