'Future<dynamic>'不是 'bool' 型的子类型



我有一个这样的checkLoginStatus()。它将返回truefalse

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()条件下返回truefalse?

  • 添加返回输入到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;
}

相关内容

  • 没有找到相关文章

最新更新