我在FutureBuilder
方法中使用了Build
,FutureBuilder
不断启动。我只想调用一次FutureBuilder
,直到我的future
加载完毕,然后在完成后立即调用另一个函数。这是我的Build
函数-
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: parsings(),
builder:
(BuildContext context, AsyncSnapshot<dynamic> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return LoadingState(context);
default:
if (snapshot.hasError)
return new Text(
'Error in snapshot: \n${snapshot.error}');
else {
return func1();
}
}
},
);
}
正如我所说,我的Build
函数不断地建立。
在此之前,我在future
中使用了initState
,但是由于这个原因,我想要返回的实际页面在调用API之前一直为空值。我根本不想看到空值,所以我想使用FutureBuilder
并显示LoadingState()
直到调用API,然后显示具有所有被调用值且不显示null
的页面价值观。任何帮助将不胜感激。
编辑:我所面临的详细问题是build
函数被一次又一次地调用,我一次又一次地看到我的LoadingState()
,也就是说,先出现LoadingState()
,然后再出现func1()
,先出现LoadingState()
,然后再出现func1()
,依此类推。这个过程根本不会停止。另外,我不想在initState中使用parsings()
,因为这样做时,在调用API之前,func1()
在我的数据中显示空值,并且一旦调用它,构建函数就会更改其值等于从API调用的值。我不想看到它,这就是为什么我想使用FutureBuilder
的原因。