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 对象在布局期间被赋予了无限大小.颤振错误
- android 4中的android RadioButton问题 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- Android - 拆分 Drawable 2022-01-01
- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01