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更新页面状态,然后页面数据显示记得要判断下数据是否存在,所以会出现一瞬间 页面没有数据,然后异步请求完成后数据刷新,这个过程很快一秒不到,甚至可能感觉不到。