Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何处理颤振中ListView的渲染错误_Dart_Flutter_Rendering - Fatal编程技术网

Dart 如何处理颤振中ListView的渲染错误

Dart 如何处理颤振中ListView的渲染错误,dart,flutter,rendering,Dart,Flutter,Rendering,在我的屏幕中,我有一个列,该列有一个ListView和一个textfield。 这就像与NPC聊天,因此如果用户输入所有答案,文本字段将变为按钮。 此时,出现了渲染错误,我不知道问题出在哪里 下面是它的外观: 下面是我实现的部分代码 return Column( children: <Widget>[ Flexible( child: ListView.builder( scrollDirection: Axis.vertical,

在我的屏幕中,我有一个列,该列有一个ListView和一个textfield。
这就像与NPC聊天,因此如果用户输入所有答案,文本字段将变为按钮。
此时,出现了渲染错误,我不知道问题出在哪里

下面是它的外观:

下面是我实现的部分代码

return Column(
  children: <Widget>[
    Flexible(
      child: ListView.builder(
        scrollDirection: Axis.vertical,
        physics: const AlwaysScrollableScrollPhysics(),
        padding: const EdgeInsets.symmetric(horizontal: 20.0,vertical: 30.0),
        itemCount: widgets.length,
        itemBuilder: (context,index) => widgets[index],
        controller: _scrollController,
      ),
    ),
    state.showSubmitButton 
    ? Padding(
        padding: const EdgeInsets.only(bottom: 20.0),
        child: PrimaryButton(
          color: primaryBeige,
          text: 'Submit',
          callback: ()=>_tagChatBloc.emitEvent(TagChatEventComplete())
        )
      ) 
    : (state.isDetailStoreLoading 
      ? Padding(
          padding: const EdgeInsets.only(bottom: 20.0),
          child: CustomProgressIndicator()
        )
      : TagChatInput(scrollController: _scrollController)
    )
  ],
);
返回列(
儿童:[
灵活的(
子项:ListView.builder(
滚动方向:轴垂直,
物理:常量AlwaysScrollablePhysics(),
填充:常量边集。对称(水平:20.0,垂直:30.0),
itemCount:widgets.length,
itemBuilder:(上下文,索引)=>widgets[index],
控制器:\ u滚动控制器,
),
),
state.showSubmitButton
?填充物(
填充:仅限常量边集(底部:20.0),
子:主按钮(
颜色:米黄色,
文本:“提交”,
回调:()=>\u tagChatBloc.emitEvent(TagChatEventComplete())
)
) 
:(state.isDetailStoreLoading
?填充物(
填充:仅限常量边集(底部:20.0),
子项:CustomProgressIndicator()
)
:TagChatInput(scrollController:\u scrollController)
)
],
);
错误

I/颤振(32685):══╡ 呈现库捕获到异常╞═════════════════════════════════════════════════════════ I/flatter(32685):在performLayout()期间抛出了以下断言: I/颤振(32685):RenderViewport超过其最大布局周期数。 I/flatter(32685):RenderViewport渲染对象在布局过程中,如果其碎片或碎片 I/颤振(32685):视口偏移决定应校正偏移以考虑收集的信息 I/颤振(32685):在该布局期间。 I/颤振(32685):然而,在这个RenderViewport对象的情况下,这种情况发生了10次,但仍然没有发生 I/颤振(32685):关于滚动偏移的共识。这通常表示存在错误。具体来说,这意味着 I/颤振(32685):RenderViewport对象遇到以下三个问题: I/flatter(32685):*一个RenderSliver子对象或ViewportOffset有一个bug,以至于他们总是认为 I/颤振(32685):无论怎样,他们都需要校正偏移。 I/flatter(32685):*RenderSliver子对象和ViewportOffset的某些组合具有不好的交互,例如 I/颤振(32685):一个应用修正,然后另一个应用反向修正,导致无穷大 I/颤振(32685):修正回路。 我/弗利特(32685):*有一个病理病例最终会得到解决,但它太复杂了 I/颤振(32685):无法在任何合理数量的布局过程中解决


如何解决此问题?

颤振布局管理器不知道将listview展开多远,因为它一直在进行,而且从未找到停止点

以下是构建消息传递UI的一些步骤:

  • 将列mainAxisSize设置为mainAxisSize.max

  • 将列表视图放在一个扩展的小部件中,其中包含一个容器。因此,您将有:

    • 扩大

      • 容器

        • 列表视图
  • 将“消息框UI”包装在一个固定高度的容器中,以便Expanded可以有一个停止的位置,并使用上述条件将其添加为列表的最后一个子项

  • 最后你应该

    Column: MainAxisSize.max
      Expanded
        Container: No given size
          ListView
      Container: Fixed height (For Messages input UI and your button)
    

    这将生成一个聊天用户界面。这就是我最近实现相同接口的方式。确保您的条件替换了固定容器的子容器,而不是容器本身。

    颤振布局管理器不知道将listview展开多远,因为它一直在进行,而且从未找到停止点

    以下是构建消息传递UI的一些步骤:

  • 将列mainAxisSize设置为mainAxisSize.max

  • 将列表视图放在一个扩展的小部件中,其中包含一个容器。因此,您将有:

    • 扩大

      • 容器

        • 列表视图
  • 将“消息框UI”包装在一个固定高度的容器中,以便Expanded可以有一个停止的位置,并使用上述条件将其添加为列表的最后一个子项

  • 最后你应该

    Column: MainAxisSize.max
      Expanded
        Container: No given size
          ListView
      Container: Fixed height (For Messages input UI and your button)
    

    这将生成一个聊天用户界面。这就是我最近实现相同接口的方式。确保您的条件替换了固定容器的子容器,而不是容器本身。

    较低版本将引发此异常。在我的颤振应用程序中,1.1.5失败,1.5.4成功

    或者您可以在目录中更改flatter源代码:
    packages\flatter\lib\src\rendering\slaver\u list.dart.

    详情见以下连结:


    较低版本将引发此异常。在我的颤振应用程序中,1.1.5失败,1.5.4成功

    或者您可以在目录中更改flatter源代码:
    packages\flatter\lib\src\rendering\slaver\u list.dart.

    详情见以下连结:


    ListView必须是包装大小,使用SizedBox或容器。ConstraintBox等。您好,我刚刚更新了您的问题,以使其更易于阅读,并将gif与文本内联显示,而不是作为链接显示。ListView的大小必须为wrap,请使用SizedBox或Container。ConstraintBox等。嗨,我刚刚更新了你的问题,以帮助它更容易阅读,并将gif与文本内联显示,而不是作为链接显示。