我有一个这样的checkLoginStatus()
。它将返回true
或false
checkLoginStatus() async {
sharedPreferences = await SharedPreferences.getInstance();
print(sharedPreferences.getString("token"));
if (sharedPreferences.getString("token") != null) {
return true;
}
return false;
}
我有一个button A
,代码在
press: () => {
if(checkLoginStatus()) {
//..Some code
} else {
//..
}
}
点击button A
,得到
Another exception was thrown: type 'Future<dynamic>' is not a subtype of type 'bool'
为什么?如何检查checkLoginStatus()
在if()
条件下返回true
或false
?
- 添加返回输入到
checkLoginStatus
,如
Future<bool> checkLoginStatus() async {
//
}
- 在if语句中等待未来完成
() async => {
if(await checkLoginStatus()) {
//
}
或
转换为Future<bool>
() async => {
if(await (checkLoginStatus() as Future<bool>)) {
//
}
你必须为checkLoginStatus()
设置await
,因为目前它的类型是Future<dynamic>
。
press: () => async {
final _checkLoginStatus = await checkLoginStatus();
if(_checkLoginStatus) {
//..Some code
} else {
//..
}
}
还有,一定要给你的方法一个返回类型。
Future<bool> checkLoginStatus() async {
sharedPreferences = await SharedPreferences.getInstance();
print(sharedPreferences.getString("token"));
if (sharedPreferences.getString("token") != null) {
return true;
}
return false;
}