【发布时间】:2019-02-15 13:55:59
【问题描述】:
在FutureBuilder中,snapshot.ConnectionState一直在等待,但是future函数成功完成。在不同的页面中,相同的代码块可以工作,ConnectionState 从等待变为完成。
未来功能:
Future getDoctors() async {
var res = await http.get(globals.domain + "users/docs/");
var resBody = json.decode(utf8.decode(res.bodyBytes));
print(res.statusCode);
if (res.statusCode == 200) {
if (mounted) {
setState(() {
doctors = resBody;
});
}
}
}
未来的建设者:
FutureBuilder(
future: getDoctors(),
builder: (BuildContext context, snapshot) {
print(snapshot);
}
)
实际结果:
AsyncSnapshot<dynamic>(ConnectionState.waiting, null, null)
预期结果:转至 AsyncSnapshot<dynamic>(ConnectionState.done, null, null)
编辑1:
在调试时注意到未来函数getDoctors() 会定期调用,我想这就是快照总是在等待的原因
【问题讨论】:
-
你能在两个页面中展示你是如何使用它们的吗?
-
@MazinIbrahim 两个页面都一样,未来的功能也差不多
dart @override Widget build(BuildContext context) { return Scaffold( body: FutureBuilder( future: getDoctors(), builder: (BuildContext context, snapshot) { print(snapshot); if (snapshot.connectionState == ConnectionState.waiting) { return Center(child: CircularProgressIndicator()); } if (snapshot.connectionState == ConnectionState.done) { return Center(...); }