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

标签 flutter dart sharedpreferences

我尝试时如何从SharedPreferences获取数据我总是得到结果Instance of 'Future<dynamic>'。 ( token 已存储在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获得 token 。

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

最佳答案

您只需要让等待关键字即可获取实际数据。由于异步函数需要时间来计算,因此您必须等待它完成。

print(await getToken());

如果要分配给任何变量,请遵循以下代码。
var x = await getToken();

关于flutter - 如何以正确的方式从SharedPreferences获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61252020/

相关文章:

google-maps - 如何从Dart扩展Google map

java - 在已经存在的 SharedPreference 值中更改数据类型

flutter - 如何根据 flutter 中的子高度限制可拖动的可滚动表以获取高度?

flutter - 如何在回调中获取实例

google-maps-api-3 - 来自地理编码 API 的响应

android - Flutter 插件开发 : importing libraries

flutter - 如何等待 forEach 完成异步回调?

java - 从另一个 Activity 获取 String 时出现 NullPointerException

android - SharedPreference 值未通过 Android 中的新值进行更新

flutter - 如果 Future 在 Flutter 中失败,是否可以在内部重试 http 请求?