如何解决无限像素溢出的底部?

Posted

技术标签:

【中文标题】如何解决无限像素溢出的底部?【英文标题】: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 我的错误 - 代码不是完全最新的。但是,很难调试此错误,因为它会间歇性出现,并且需要几轮重建/重新运行才能使在模拟器上运行的应用程序真正更新。 我遇到了类似的问题(但不是无限像素)。我最终来到***.com/a/49614547/5766375 并使用了这个解决方案,我用 SingleChildScrollView 包裹了我的专栏。 也许你可以看看这个link :) 我已经尝试过您的代码,它似乎工作正常。我点击屏幕的所有内容都会正确返回xy 坐标。如果有机会,您能否提供一个屏幕截图并至少突出显示屏幕中出现该错误的区域? 【参考方案1】:

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

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

【讨论】:

以上是关于如何解决无限像素溢出的底部?的主要内容,如果未能解决你的问题,请参考以下文章

Jqgrid寻呼机(顶部或底部)太多自定义按钮然后溢出图片和文本,如何解决?

如何解决对话框中的溢出问题?

移动到其他页面时无法保持底部导航栏颤动

高分悬赏:如何解决html注释文字引起在IE6中浮动层内容溢出问题。

底部溢出 418 像素的 RenderFlex

颤振 - 底部溢出像素数