Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何使容器高度与子listView项目大小匹配_Flutter_Dart - Fatal编程技术网

Flutter 如何使容器高度与子listView项目大小匹配

Flutter 如何使容器高度与子listView项目大小匹配,flutter,dart,Flutter,Dart,我构建了我的应用程序主屏幕,它包含了小部件的多个部分,其中大部分基本上是一个大小不同的列表视图,我把它们都放在列小部件中 问题是此listView实际上来自streamBuilder,因此列表中的内容是动态的(来自firebase),因此有一段时间它将包含5项,例如0项 据我所知,当我使用streambuilder或listview时,通常我需要将此小部件扭曲到具有预定义高度的容器中,如果listview项目只有1个,并且我将高度预定义为5个项目,那么它将显示一个空白区域(由于容器可容纳5件物品

我构建了我的应用程序主屏幕,它包含了小部件的多个部分,其中大部分基本上是一个大小不同的列表视图,我把它们都放在列小部件中

问题是此listView实际上来自streamBuilder,因此列表中的内容是动态的(来自firebase),因此有一段时间它将包含5项,例如0项

据我所知,当我使用streambuilder或listview时,通常我需要将此小部件扭曲到具有预定义高度的容器中,如果listview项目只有1个,并且我将高度预定义为5个项目,那么它将显示一个空白区域(由于容器可容纳5件物品,但对于该用户而言,他/她只有1件物品)

容器(
高度:屏幕高度*0.4,
孩子:StreamBuilder(
stream:database.placesStream(),
生成器:(上下文,快照){
返回列表项BuilderNoScroll(
快照:快照,
itemBuilder:(上下文,位置)=>\u buildPlaceList(屏幕宽度,屏幕高度,位置),
);
},
),
),

那么,如何解决这个问题,还是我在这种情况下使用了错误的小部件?

这似乎是一个合法的问题,但更多的是一个逻辑问题,而不是设计问题。默认情况下,您不必直接构建listview,您可以检查正在侦听的流中是否有可用的数据。设置一个标志或一些东西,根据这些标志或东西,您可以决定选择是否生成要显示的listview

此外,一旦获得需要在列表视图上显示的列表,还可以通过检查列表长度来更改容器的大小

无论如何,这是一个七个月前的问题,希望你已经找到了解决问题的方法

快乐编码! GS

Container(
  height: screenHeight * 0.4,
  child: StreamBuilder<List<Place>>(
    stream: database.placesStream(),
    builder: (context, snapshot) {
      return ListItemsBuilderNoScroll<Place>(
        snapshot: snapshot,
        itemBuilder: (context, place) => _buildPlaceList(screenWidth, screenHeight, place),
      );
    },
  ),
),