如何以正确的方式从SharedPreferences获取数据



如何从SharedPreferences获取数据当我尝试时,我总是得到结果Instance of 'Future<dynamic>'。(令牌已存储在SharedPreferences中(

D/ViewRootImpl@22e7e79[MainActivity]( 2199): ViewPostIme pointer 0
D/ViewRootImpl@22e7e79[MainActivity]( 2199): ViewPostIme pointer 1
D/ViewRootImpl@22e7e79[MainActivity]( 2199): ViewPostIme pointer 0
D/ViewRootImpl@22e7e79[MainActivity]( 2199): ViewPostIme pointer 1
I/flutter ( 2199): Instance of 'Future<dynamic>'
I/flutter ( 2199): {"data":null,"error":"Route Not Found Exception","message":"Route [login] not defined.","code":500}

我创建了一个代码来获取我的SharedPreferences数据

class LoginProvider with ChangeNotifier {
var api = ApiServices();
LoginModel loginModel;
SharedPreferences preferences;
Future<void> logout() async {
print(getToken());
final response = await api.client
.post("${api.baseUrl}/logout", headers: <String, String>{
'Content-Type': 'application/json;',
'Authorization': 'Bearer ' + getToken().toString()
});
print(response.body);
if (response.statusCode == 200) {
clearSharePref();
notifyListeners();
return null;
} else {
return null;
}
}
getToken() async {
preferences = await SharedPreferences.getInstance();
var token = preferences.getString("token").toString();
return token;
}
}

但是当我调用我的API(注销功能(时,我无法从SharedPreferences获得我的令牌。

在调用API之前获取SharedPreferences数据的correct way是什么?

您只需放入wait关键字即可获得实际数据。由于异步函数需要时间来计算,所以您必须等待它完成。

print(await getToken());

如果您想分配给任何变量,那么按照下面的代码执行。

var x = await getToken();

请将Future<String>左侧添加到getToken((方法签名中,如下所示

Future<String> getToken() async {
preferences = await SharedPreferences.getInstance();
var token = preferences.getString("token").toString();
return token;
}

相关内容

  • 没有找到相关文章

最新更新