【发布时间】:2020-01-16 12:05:08
【问题描述】:
我的 Provider Repository 中有一个 Future 函数。但是它是Future<bool>,因为我需要async 来进行http 请求。
Future<bool> hasCard() async {
String token = await getToken();
var body = jsonEncode({"token": token, "userID": user.getUserID()});
var res = await http.post((baseUrl + "/hasCard"), body: body, headers: {
"Accept": "application/json",
"content-type": "application/json"
});
print(res.toString());
if (res.statusCode == 200) {
this.paymentModel = PaymentModel.fromJson(json.decode(res.body));
return true;
}
return false;
}
在我的小部件中,我想检查这个值:
Widget build(BuildContext context) {
var user = Provider.of<UserRepository>(context);
if(user.hasCard())
{
//do something
}
但我收到一条错误消息:
条件必须有一个静态类型'bool'.dart(non_bool_condition)
因为它是Widget 类型,所以我不能在这里使用async。有什么办法可以解决这个问题?
【问题讨论】:
-
你应该使用futurebuilder,在等待数据时你可以显示一个progresshud