Flutter initState页面初始化异步请求方法

Flutter initState页面初始化异步请求方法

怎么每次加载一个页面都自动去请求服务器最新的数据呢,我们会很自然的想到页面初始化initState()方法。
于是在initState下加入异步请求数据代码,因为是异步请求所以方法必须加上async,如下:
原文链接:https://blog.csdn.net/weixin_44259356/article/details/105652803

  @override
  Future<void> initState () async {
    super.initState();
    //异步请求后台数据
    await WebService(context)
        .getMyAddr();
  }

错误

运行,报错:
Another exception was thrown: _MyAddrWidgetState.initState() returned a Future.
在这里插入图片描述
flutter initState不允许加上async

解决方案

异步处理单独完成,如下

  _load() async {
    await WebService(context)
        .getMyAddr("11");
      //用户缓存
      Global.profile.myAddr != null? myAddr = Global.profile.myAddr:myAddr=null;
  }

  @override
  void initState (){
    super.initState();
    Future.delayed(Duration.zero, () => setState(() {
      _load();
1
}));
  }

先请求服务器数据,请求完毕后再通过setState更新页面状态,然后页面数据显示记得要判断下数据是否存在,所以会出现一瞬间 页面没有数据,然后异步请求完成后数据刷新,这个过程很快一秒不到,甚至可能感觉不到。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值