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