根据ListView的大小将ListView放入/放出Expanded

时间:2020-02-03 05:31:31

标签: flutter

我有一个可能大/小的ListView,具体取决于API调用的结果。我想做的是,如果结果太大,请将此ListView放在Expanded中。

客户端可以是任何东西,无论是电话还是标签,都可以使用不同大小,并且支持水平和垂直方向。

如何在ListView生成之前检测其大小?

if (MyListView.height > this.container.height) {  // ListView isn't built yet, so how can I know the size?
  return Expanded(child: MyListView);
}
return MyListView();

// MyListView is just a ListView inside a Container

1 个答案:

答案 0 :(得分:0)

API调用应在initState函数内部进行,以免每次重新构建时都命中端点。 (这可能会发生多次),您可以在statefull小部件中创建一个空的future对象,然后在initState函数中将api调用分配给该future对象。在构建方法中,添加FutureBuilder小部件以控制api调用的状态。 (加载,错误?等)。一旦获得数据,只需检查列表的长度,然后您就可以决定要执行的操作:

data.length < 20 ? MyListView() : Expanded (child: MyListView())