在Build方法中使用FutureBuilder

时间:2020-06-18 07:45:51

标签: flutter asynchronous dart

我在FutureBuilder方法中使用了BuildFutureBuilder不断启动。我只想调用一次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的原因。

0 个答案:

没有答案