如何从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;
}