在我的屏幕上,我有一列,并且该列有一个ListView和一个文本字段。
就像与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)
)
],
);
错误
I / flutter(32685):══╡渲染库引起的异常CA ══════════════════════════ I / flutter(32685):在performLayout()期间引发了以下断言: I / flutter(32685):RenderViewport超过了其最大布局周期数。 I / flutter(32685):在布局期间,RenderViewport渲染对象可以重试它们的碎片或碎片 I / flutter(32685):ViewportOffset决定应该更正偏移量,以考虑到收集到的信息 I / flutter(32685):在该布局期间。 I / flutter(32685):但是,在此RenderViewport对象的情况下,发生了10次,但仍然没有 I / flutter(32685):关于滚动偏移量的共识。这通常表明存在错误。具体来说,这意味着 I / flutter(32685):RenderViewport对象遇到以下三个问题: I / flutter(32685):* RenderSliver子级或ViewportOffset之一存在一个错误,使他们始终认为 I / flutter(32685):无论如何,他们都需要校正偏移量。 I / flutter(32685):* RenderSliver子级和ViewportOffset的某些组合存在不良交互,例如 I / flutter(32685):一个应用校正,然后另一个应用反向校正,导致无穷大 I / flutter(32685):更正循环。 I / flutter(32685):*有一种病理情况最终会解决,但它是如此复杂以至于 I / flutter(32685):无法通过任何合理数量的布局传递来解决。
我该如何解决这个问题?
答案 0 :(得分:0)
Flutter布局管理器不知道将列表视图扩展到多远,因为它一直在进行并且从未找到停止点。
以下是构建消息传递UI的一些步骤:
将您的列mainAxisSize设置为MainAxisSize.max
将列表视图放入其中包含容器的扩展窗口小部件中。因此,您将拥有:
展开
容器
将“消息框UI”包装在固定高度的容器中,以便“扩展的”可以停下来,并将其添加为列表的最后一个子项,并使用上述条件来做到这一点。
最后你应该拥有
Column: MainAxisSize.max
Expanded
Container: No given size
ListView
Container: Fixed height (For Messages input UI and your button)
这将产生一个聊天UI。这就是我最近实现相同接口的方式。确保您的条件替换固定容器的子容器,而不是容器本身。
答案 1 :(得分:0)
较低的版本将引发此异常。在我的Flutter应用中,1.1.5失败,1.5.4成功。
或者您可以在目录:packages\flutter\lib\src\rendering\sliver_list.dart.
详细信息在下面的链接中: