Dart 如何处理颤振中ListView的渲染错误
在我的屏幕中,我有一个列,该列有一个ListView和一个textfield。Dart 如何处理颤振中ListView的渲染错误,dart,flutter,rendering,Dart,Flutter,Rendering,在我的屏幕中,我有一个列,该列有一个ListView和一个textfield。 这就像与NPC聊天,因此如果用户输入所有答案,文本字段将变为按钮。 此时,出现了渲染错误,我不知道问题出在哪里 下面是它的外观: 下面是我实现的部分代码 return Column( children: <Widget>[ Flexible( child: ListView.builder( scrollDirection: Axis.vertical,
这就像与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的一些步骤:
- 扩大
- 容器
- 列表视图
- 容器
Column: MainAxisSize.max
Expanded
Container: No given size
ListView
Container: Fixed height (For Messages input UI and your button)
这将生成一个聊天用户界面。这就是我最近实现相同接口的方式。确保您的条件替换了固定容器的子容器,而不是容器本身。颤振布局管理器不知道将listview展开多远,因为它一直在进行,而且从未找到停止点 以下是构建消息传递UI的一些步骤:
- 扩大
- 容器
- 列表视图
- 容器
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与文本内联显示,而不是作为链接显示。