【发布时间】:2019-07-01 00:47:17
【问题描述】:
我有一个远程异步 firebase 函数“checkSubscription”,如果用户有有效订阅,则返回“true”或 或“N”,其中 N 表示用户用完之前剩余的积分数。
为了跟踪完成情况,我的班级中有这两个未来:
Future<bool> hasSubscription;
Future<int> remaining;
假设这些数据类型不能更改。 远程函数是这样调用的:
CloudFunctions.instance
.call(functionName: 'checkSubscription');
这个函数返回一个Future<dynamic> 和结果。
我正在为将我的两个字段分配所需类型所需的 Future 逻辑而苦苦挣扎。 这是我想出的
Future<void> checkIfUserHasSubscription() async {
await Future < dynamic > remainingS = CloudFunctions.instance
.call(functionName: 'isValid');
if (remaining == "true")
hasSubscription = true;
else {
hasSubscription = false;
remaining = int.parse(remaining);
}
}
显然这不起作用,因为我分配的是 bool 而不是 Future
有什么建议吗?
【问题讨论】:
-
你为什么不只使用
bool来代替? -
因为我的代码中有很多地方在等待结果。如果数据类型是 Future
我可以简单地:在每个地方等待 hasSubscription,而不是在结果进来后仔细创建回调来更新每个地方。 -
好吧。我只是要求了解您是否不能以错误的方式使用它。要与
Future一起使用,请参阅答案。
标签: asynchronous dart async-await flutter