我构建了包含小部件的多个部分的应用程序主屏幕,并且基本上大部分是具有不同大小的listView,并将它们全部放入列小部件中。
问题是此listView实际上来自streamBuilder,因此列表内的内容是动态的(来自firebase),因此将有一段时间包含5个项目或0个项目。
据我所知,当我通常使用streambuilder或listview时,我需要在具有预定义高度的容器中扭曲此小部件,如果listview项只有1个并且我将高度预定义为5个项,那么它将显示一无所有的大空白(由于容器只能容纳5个物品,但对于该用户,他/她只有1个物品)
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),
);
},
),
),
那么,如何解决此问题,或者在这种情况下我使用了错误的小部件?
这似乎是一个合法的问题,但更多的是逻辑问题,而不是设计问题。您可以检查正在侦听的流上是否有可用数据,而不是默认情况下直接构建listview。根据您决定是否构建要显示的列表视图,设置一个标志或其他内容。
此外,一旦获得需要在列表视图上显示的列表,您还可以通过检查列表长度来更改容器的大小。
无论如何,这是一个七个月大的问题,希望您已经找到解决问题的方法。
快乐编码!GS