如何以正确的方式从 SharedPreferences 获取数据
How to get data from SharedPreferences with correct way
我尝试时如何从 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
是什么?
请在 getToken() 方法签名左侧添加 Future<String>
,如下所示...
Future<String> getToken() async {
preferences = await SharedPreferences.getInstance();
var token = preferences.getString("token").toString();
return token;
}
您只需输入 await 关键字即可获取实际数据。由于异步函数需要时间来计算,因此您必须等待它完成。
print(await getToken());
如果您想分配给任何变量,请按照以下代码操作。
var x = await getToken();
我尝试时如何从 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
是什么?
请在 getToken() 方法签名左侧添加 Future<String>
,如下所示...
Future<String> getToken() async {
preferences = await SharedPreferences.getInstance();
var token = preferences.getString("token").toString();
return token;
}
您只需输入 await 关键字即可获取实际数据。由于异步函数需要时间来计算,因此您必须等待它完成。
print(await getToken());
如果您想分配给任何变量,请按照以下代码操作。
var x = await getToken();