Flutter 如何设置适合屏幕的容器高度
注意:此小部件是另一列的子项Flutter 如何设置适合屏幕的容器高度,flutter,flutter-layout,Flutter,Flutter Layout,注意:此小部件是另一列的子项 我需要在列内使用ListView.builder,但要在列内使用它,我需要用容器包装它,不仅需要设置高度,这里我使用了MediaQuery.of(context).size.height,它可以工作,但有一个问题,它显示RenderFlex底部溢出226像素
我需要在列内使用ListView.builder,但要在列内使用它,我需要用容器包装它,不仅需要设置高度,
这里我使用了MediaQuery.of(context).size.height,它可以工作,
但有一个问题,它显示RenderFlex底部溢出226像素<如何避免它
Column(
children: <Widget>[
getTopWidget(),
Container(
height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width,
child: ListView.builder(
itemCount: shapShot.data.length,
itemBuilder: (context,index){
return EventCard(
title: shapShot.data[index].title,
details: shapShot.data[index].details,
imageUrl: shapShot.data[index].imageUrl,
);
}),
),
],
);
由于topWidget()的存在,您可以用Expanded包裹内部容器,并移除您给定的高度。扩展的小部件将使容器占据可用的完整空间
Column(
children: <Widget>[
getTopWidget(),
//Wrap the container below with expanded
Container(
// remove this height
height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width,
child: ListView.builder(
itemCount: shapShot.data.length,
itemBuilder: (context,index){
return EventCard(
title: shapShot.data[index].title,
details: shapShot.data[index].details,
imageUrl: shapShot.data[index].imageUrl,
);
}),
),
],
);
列(
儿童:[
getTopWidget(),
//将下面的容器用展开的包装纸包裹起来
容器(
//去掉这个高度
高度:MediaQuery.of(context).size.height,
宽度:MediaQuery.of(context).size.width,
子项:ListView.builder(
itemCount:shapShot.data.length,
itemBuilder:(上下文,索引){
返回事件卡(
标题:shapShot.data[索引]。标题,
详细信息:shapShot.data[index]。详细信息,
imageUrl:shapShot.data[index].imageUrl,
);
}),
),
],
);
编辑:请注意,除非列是小部件层次结构中最外层的列,否则Expanded不会有帮助。如果列中有列,请将上列的子列包装为展开。您可以这样使用它:
Column(
children: <Widget>[
getTopWidget(),
Expanded(
child: ListView.builder(
itemCount: shapShot.data.length,
itemBuilder: (context,index){
return EventCard(
title: shapShot.data[index].title,
details: shapShot.data[index].details,
imageUrl: shapShot.data[index].imageUrl,
);
}),
),
],
);
列(
儿童:[
getTopWidget(),
扩大(
子项:ListView.builder(
itemCount:shapShot.data.length,
itemBuilder:(上下文,索引){
返回事件卡(
标题:shapShot.data[索引]。标题,
详细信息:shapShot.data[index]。详细信息,
imageUrl:shapShot.data[index].imageUrl,
);
}),
),
],
);
因为如果您使用的是MediaQuery.of(context).size.height,它将溢出视图。正如应用程序上已经显示的那样。首先用设置高度的容器包装柱:
Container(
height: MediaQuery.of(context).size.height,
child: Column(...),
),
现在,在列中,包装要用展开的
小部件展开的子项,使其展开到列的高度(由外部容器高度限制)。您可以使用:
Container(
height: MediaQuery.of(context).size.height,
width:MediaQuery.of(context).size.width,
),
要根据屏幕大小制作容器,还可以为容器设置屏幕的百分比。例如,要将容器高度设置为屏幕的60%,将宽度设置为屏幕使用的40%,请执行以下操作:
Container(
height: MediaQuery.of(context).size.height * 60/100,
width:MediaQuery.of(context).size.width * 40/100,
),
将该容器的扩展为子容器,将列或行作为该容器的子容器,以使用所需的小部件填充容器
Container(
height: MediaQuery.of(context).size.height * 60/100,
width:MediaQuery.of(context).size.width * 40/100,
child:Expanded(
child : Column(
......
),
),
),
您是否尝试过:RenderBox未布局:RenderPaintBoundary#76ded NEEDS-LAYOUT NEEDS-PAINT'package:flatter/src/rendering/box.dart':失败的断言:第1695行位置12:“hasSize”您可以添加屏幕截图吗。@Midhilaj您尝试过我上面的代码吗?因为我认为在使用此工具后,如果没有其他错误,您的问题就会得到解决。请检查我使用此工具时用屏幕截图更新的问题solution@Midhilaj您还可以添加您已经实现的整个类代码吗?我确信这是因为层次结构中的小部件。请附上完整的构建函数。列是直接子项还是其他小部件的子项?此小部件是另一列的子项我们开始吧。这就是问题所在。好吧,那么解决办法是什么?
Container(
height: MediaQuery.of(context).size.height * 60/100,
width:MediaQuery.of(context).size.width * 40/100,
child:Expanded(
child : Column(
......
),
),
),