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(
...... 
           ),
      ),
),