如何解决Flutter未来的布尔函数总是返回默认值
我在该函数中有一个 Future 布尔函数,我使用 map 函数检查了一些数据。 if 和 else 两个条件都设置布尔变量为真。但它总是返回默认的 false 值。下面的代码是我的功能。
Future<bool> checkisShowablebydepend(Questions questions) async {
bool isDependvalue = false;
questions.dependFields.map((e) async {
bool isequal = (questions.dependValue.toLowerCase() ==
_formKey.currentState.fields[e].value.toLowerCase());
if (isequal) {
isDependvalue = true;
} else {
isDependvalue = true;
}
});
return isDependvalue;
}
Widget loadWidgets(Questions questions) {
if (questions.depend) {
return FutureBuilder<bool>(
future: checkisShowablebydepend(questions),builder: (BuildContext context,AsyncSnapshot<bool> snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return new Text('Press button to start');
case ConnectionState.waiting:
return new Text('Awaiting result...');
default:
if (snapshot.hasError)
return new Text('Error: ${snapshot.error}');
else
return new Text('Result: ${snapshot.data}');
}
});
} else {
return selectFormfield(questions);
}
}
解决方法
如果您的目标是遍历 questions.dependFields
列表,那么 forEach 似乎更合适。
顺便说一下,我不确定这个函数是否需要 Future
。
Async
表示此函数是异步的,您可能需要
稍等片刻即可得到结果。
Await
表示 - 在这里等待,直到此功能完成,您将
获取它的返回值。
await 关键字仅在异步函数中有效。
您已将函数设置为sync
,因此您可以使用await
关键字等待比较结果
questions.dependFields.map((e) async {
bool isequal = await (questions.dependValue.toLowerCase() ==
_formKey.currentState.fields[e].value.toLowerCase());
if (isequal) {
isDependvalue = true;
} else {
isDependvalue = true;
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。