Flutter 使用FutureBuilder请求多个接口后再渲染页面

FutureBuilder

FutureBuilder的用法很简单, 主要涉及两个参数:

1、future 指定异步任务,交给 FutureBuilder 来管理;

2、builder 根据异步任务的状态来构建不同的组件

 

FutureBuilder异步任务的状态
状态描述
none没有连接到任何异步任务
waiting已连接到异步任务等待被交互
active已连接到一个已激活的异步任务
done已连接到一个已结束的异步任务

状态的使用

snapshot.connectionState == ConnectionState.done

只请求一个接口时

body: FutureBuilder(
        future: _futureBuilderFuture,
        builder: (context, AsyncSnapshot snapshot) {
        
        if (snapshot.connectionState == ConnectionState.done) {
            // 说明有数据
            ...
        }
      })

防止多次请求接口

这里的 _futureBuilderFuture变量是为了避免重复网络请求,所以我们有了这样的写法:

var _futureBuilderFuture;

@override
void initState() {
    _futureBuilderFuture = getPointDetails();
    super.initState();
}

Future getPointDetails() {
    var formData = {"id": pointID != null ? pointID['pointId'] : "传值为空"};
    return request("getPointById", formData: formData).then((value) {
      pointDetailsResponse = value;
      print("898pointDetailsResponse:${pointDetailsResponse}");
    });
}

请求两个接口时

// getIncident() 和 getPointDetails()是两个请求接口的异步方法
Future getDatas() async {
    return Future.wait([getIncident(), getPointDetails()]);
}

最后将 getDatas()赋给 _futureBuilderFuture即可。

 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值