当前位置: 首页 > 面试题库 >

Flutter(Dart):渲染引起的异常/ RenderFlex溢出

韦高阳
2023-03-14
问题内容

我的Flutter(Dart)RenderFlex像素溢出了。
渲染库的例外。

如何管理或应用滚动功能到我的应用页面视图,并避免Flutter出现诸如以下消息的渲染异常:

RenderFlex在底部溢出了28个像素。

如果您有任何需要完整的日志来帮助我的信息,请在这里:

在热重装时,它会根据消息在底部显示黄色/黑色条纹。

我可以使用可滚动的小部件来管理吗?或者我可以声明其他方式来控制它?

如果需要的话,提供完整代码(我更改了文本数据,但假定出现的文本长于屏幕尺寸,因此出现错误):

   @override
  Widget build(BuildContext context) {
    return new DefaultTabController(
        length: 3,
        child: new Scaffold(
          appBar: new AppBar(
            bottom: new TabBar(
              tabs: [
                new Tab(text: "xxx",),
                new Tab(text: "xxx",),
                new Tab(text: "xxx",),
              ],
            ),
            title: new Text(data["xxx"]),
          ),
          body: new TabBarView(
            children: [
              new Column(
                children: <Widget>[
                  new Text(data["xxx"],
                        style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.blue,
                              fontSize: 16.0
                        ),),
                  new Text(data["xxx"],
                        style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.blue,
                              fontSize: 10.0
                        ),),
                  new Text(data["xxx"],
                        style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.blue,
                              fontSize: 16.0
                        ),),
                  new Text(data["xxx"],
                        style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.blue,
                              fontSize: 8.0
                        ),
                      ),
                  new Text(data["xxx"],
                        style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.blue,
                              fontSize: 8.0
                        ),),

                  new Row(
                    children: <Widget>[
                      new Expanded(
                        child: new Text("xxx"),
                      ),
                      new Expanded(
                        child: new Icon(Icons.file_download, color: Colors.green, size: 30.0,),
                      ),
                    ],
                  ),

                  new Divider(),
                  new Text("xxx", 
                            style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.red,
                              fontSize: 16.0
                      ),
                  ),
                ],
              ),

              new ListView.builder(
                itemBuilder: (BuildContext context, int index) => new EntryItem(_lstTiles[index]),
                itemCount: _lstTiles.length,
              ),

              new Column(
                children: <Widget>[
                  new Text(data["xxx"], 
                            style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.green[900],
                              fontSize: 16.0
                      ),
                  ),
                  new Text(data["xxx"], 
                            style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.green[900],
                              fontSize: 16.0
                      ),),
                  new Text(data["xxx"]),
                  new ListTile(title: new Text("xxx")),
                  new Text(data["xxx"]),
                  new ListTile(title: new Text("xxx")),
                  new Divider(),
                  new Text("xxx", 
                            style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.red,
                              fontSize: 16.0
                      ),
                  ),
                ],
              ),
            ],
          ),
        ),
      );
  }

问题答案:

这是一个很常见的问题,尤其是当您开始在多种设备和方向上测试您的应用程序时。Flutter的Widget画廊有一个部分介绍了各种滚动Widget:

https://flutter.io/widgets/scrolling/

我建议您将全部内容包装在中SingleChildScrollView,或使用滚动条ListView

编辑:这个问题和答案已经得到一些注意,所以我想为那些登陆这里的人提供更多帮助。

Flutter SDK团队将大量精力投入到SDK代码本身内的良好文档中。一个用于理解算法最好的资源是Flex小部件(Row和Column是两个子类Flex)使用,以奠定了他们的孩子是伴随着阶级本身DartDoc:

https://github.com/flutter/flutter/blob/e3005e6962cfefbc12e7aac56576597177cc966f/packages/flutter/lib/src/widgets/basic.dart#L3724

Flutter网站还包含有关建筑布局的教程以及 有关如何使用和小部件的交互式代码实验室。
RowColumn



 类似资料:
  • 主要内容:抛出异常,自定义异常异常(或异常事件)是在执行程序期间出现的问题。发生异常时,程序的正常流程中断,程序/应用程序异常终止。 Dart内置异常如下 - 编号 异常 描述 1 延迟库无法加载时抛出。 2 当字符串或某些其他数据没有预期格式且无法解析或处理时抛出异常。 3 当数字除以零时抛出。 4 所有与输入输出相关的异常的基类。 5 无法创建隔离时抛出。 6 在等待异步结果时发生计划超时时抛出。 Dart中的每个异常都是

  • 问题内容: 我试图获取Java中的上溢和下溢异常,但找不到任何不错的教程。我特别想学习 它们彼此之间有何不同? 这些异常的子类是什么? 在哪种情况下会抛出它们? 其中哪些可以处理,如何处理? 与它们相关的最佳实践是什么? 任何指向有用教程的链接都可以 问题答案: 好的,OP曾经想了解堆栈溢出和算术溢出及其对应的下溢。开始.... 当数字太大而无法容纳其值类型时,就会发生算术溢出。例如,a 保持值介

  • 问题内容: 当整数溢出发生而不是静默失败时,是否可能引发某种运行时异常。例如 由于溢出而打印,我想得到某种运行时异常 问题答案: 是的,从Java-8开始,您可以使用新的Exact方法,它将在溢出时引发异常(java.lang.ArithmeticException:整数溢出)。例如

  • 渲染引擎用于渲染内容。 概要 hexo.extend.renderer.register(name, output, function(data, options){ }, sync); 参数 描述 name 输入的扩展名(小写,不含开头的 .) output 输出的扩展名(小写,不含开头的 .) sync 同步模式 渲染函数中会传入两个参数: 参数 描述 data 包含两个属性:文件路径 pat

  • 本文向大家介绍RecyclerView索引溢出异常的解决方法,包括了RecyclerView索引溢出异常的解决方法的使用技巧和注意事项,需要的朋友参考一下 使用RecyclerView过程中遇到异常: java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionVi

  • 底部的RenderFlex溢出了676像素。在SingleChildScrollView中 控件面板(上下文){返回animatedPosited(持续时间:持续时间,顶部:0,底部:0,左侧:isCollapsed?0:0.6*屏幕宽度,右侧:isCollapsed?0:-0.2*屏幕宽度,子级:缩放平移(缩放:缩放动画,子级:材质)(animationDuration:持续时间,borderR