RenderCustomMultiChildLayoutBox object was given an infinite size during layout. flutter error(RenderCustomMultiChildLayoutBox 对象在布局期间被赋予了无限大小.颤振错误)
问题描述
我是 Flutter 的新手,正在尝试在 Flutter 中实现自定义列表视图.在布局错误期间,它的给定 RenderCustomMultiChildLayoutBox 对象被赋予了无限大小
I am new to flutter and am trying to implement custom list view in flutter. Its giving be RenderCustomMultiChildLayoutBox object was given an infinite size during layout error
- 我无法获取哪个小部件的抛出错误
2 另外请建议如何调试这些布局错误,因为错误跟踪没有引发错误的特定小部件信息
2 Also please suggest how to debug these layout errors as the error trace doesn't have specific widget info for which error is thrown
请在下面找到相同的代码:
please find the below code for the same:
class ChatItemSreen extends StatelessWidget {
var leftSection;
var middleSection;
var rightSection;
ChatModel _chartObj;
ChatItemSreen(ChatModel _chartObj) {
this._chartObj = _chartObj;
//.........the left section ...........................
CircleAvatar image = new CircleAvatar(
backgroundColor: Colors.lightGreen,
backgroundImage: new NetworkImage(this._chartObj.geturl()),
radius: 24.0,
);
leftSection = new Container(child: image);
//.........the middle section ...........................
middleSection = new Expanded(
child: new Container(
padding: new EdgeInsets.only(left: 8.0),
child: new Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
new Text(this._chartObj.getuserName(),
style: new TextStyle(
color: Colors.black,
fontWeight: FontWeight.w300,
fontSize: 16.0)),
new Text(this._chartObj.getmessage(),
style: new TextStyle(color: Colors.grey))
],
),
));
//.........the right section ...........................
rightSection = new Container(
child: new Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
new Text(this._chartObj.gettimeStamp()),
new CircleAvatar(
backgroundColor: Colors.lightGreen,
radius: 12.0,
child: new Text(
this._chartObj.getunreadMsgNo(),
style: new TextStyle(color: Colors.white, fontSize: 12.0),
))
],
),
);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Container(
margin: new EdgeInsets.all(2.0),
child: new Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[leftSection, middleSection, rightSection],
)),
);
}
}
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(title: "Shashank List", home: RandomWords());
}
}
class RowItemState extends State<RandomWords>
{
final List<ChatModel> items = new List();
@override
void initState()
{
super.initState();
setState(()
{
items.add(new ChatModel("http://img2.thejournal.ie/inline/2470754/original?width=428&version=2470754", "9:35", "2", "Shashank", "Missed vedio call!!"));
items.add(new ChatModel("http://img2.thejournal.ie/inline/2470754/original?width=428&version=2470754", "10:35", "3", "Kakroo", "Missed vedio call!!"));
items.add(new ChatModel("http://img2.thejournal.ie/inline/2470754/original?width=428&version=2470754", "02:45", "4", "Alpha 1", "Missed vedio call!!"));
items.add(new ChatModel("http://img2.thejournal.ie/inline/2470754/original?width=428&version=2470754", "12:30", "6", "Beta 2", "Missed vedio call!!"));
});
}
@override
Widget build(BuildContext context)
{
return MaterialApp(
home: ListView.builder(
itemCount: items.length,
itemBuilder: (context,position)
{
ChatModel obj = items.elementAt(position);
return new ChatItemSreen(obj);
}
),
);
}
}
给我以下错误:
XCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter (15078): The following assertion was thrown during performLayout():
I/flutter (15078): RenderCustomMultiChildLayoutBox object was given an infinite size during layout.
I/flutter (15078): This probably means that it is a render object that tries to be as big as possible, but it was put
I/flutter (15078): inside another render object that allows its children to pick their own size.
I/flutter (15078): The nearest ancestor providing an unbounded height constraint is:
I/flutter (15078): RenderIndexedSemantics#a9825 relayoutBoundary=up3 NEEDS-LAYOUT NEEDS-PAINT
I/flutter (15078): creator: IndexedSemantics ← NotificationListener<KeepAliveNotification> ← KeepAlive ←
I/flutter (15078): AutomaticKeepAlive ← SliverList ← MediaQuery ← SliverPadding ← Viewport ← _ScrollableScope ←
I/flutter (15078): IgnorePointer-[GlobalKey#e8d9b] ← Semantics ← Listener ← ⋯
I/flutter (15078): parentData: index=0; layoutOffset=0.0 (can use size)
I/flutter (15078): constraints: BoxConstraints(w=411.4, 0.0<=h<=Infinity)
I/flutter (15078): semantic boundary
I/flutter (15078): size: MISSING
I/flutter (15078): index: 0
I/flutter (15078): The constraints that applied to the RenderCustomMultiChildLayoutBox were:
I/flutter (15078): BoxConstraints(w=411.4, 0.0<=h<=Infinity)
I/flutter (15078): The exact size it was given was:
I/flutter (15078): Size(411.4, Infinity)
I/flutter (15078): See https://flutter.io/layout/ for more information.
推荐答案
我在尝试在单独的文本段落中包含可缩放的 PhotoView
小部件时遇到了这个确切的问题.
I had this exact problem while trying to include a pinch-and-zoomable PhotoView
widget among separate paragraphs of text.
当您编译并运行该应用程序时,您可能会注意到您的违规小部件应该是一个无限长的黑色区域.
When you compile and run the app, you probably noticed that where your offending widget is supposed to be is an infinitely long black area instead.
错误的第二行写着
在布局期间被赋予了无限大小
was given an infinite size during layout
这意味着需要限制小部件的大小.
which implies that the widget's size needs to be constrained.
我的解决方案是将 PhotoView
包装在 SizedBox
小部件中.
My solution was to wrap the PhotoView
in a SizedBox
widget.
...
Text("Here's some text.
And then there's this image:
"),
SizedBox(
width: 200.0,
height: 300.0,
child: PhotoView(
imageProvider: NetworkImage("http://image/url/here.jpg"),
heroTag: "Lauren Mayberry",
),
),
Text("And now more text"),
...
在此示例中,我使用了固定的宽度和高度,但您始终可以根据属于其中的任何内容动态调整小部件的大小.
In this example, I used a fixed width and height but you could always dynamically size your widget based on whatever content belongs therein.
关于如何更好地调试布局错误:我唯一的建议是一次删除一个小部件,直到错误消失.这当然不太理想,但确实有效.
As for how to better debug layout errors: my only suggestion is to remove widgets one at a time until the error goes away. It's certainly less than ideal but it works.
这篇关于RenderCustomMultiChildLayoutBox 对象在布局期间被赋予了无限大小.颤振错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:RenderCustomMultiChildLayoutBox 对象在布局期间被赋予了无限大小.颤振错误
基础教程推荐
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01