Flutter localstorage.getItem() 返回 null

Jho*_*lla 1 local-storage flutter

我正在使用一个名为 Flutter 的包localstorage来保存从 API 后端获得的令牌和用户 ID。我已成功保存数据,正如我从 Chrome 的本地存储中看到的那样:

class AuthService {
  final LocalStorage storage = new LocalStorage('my_app_session');
  ....

  login(context, email, password) async {
      ...
      storage.setItem('id', res['data']['id'].toString());
      storage.setItem('token', res['token']['access_token']);
      ...
      Navigator.pushNamed(context, '/somepage');
  });
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然后从 ChangeNotifier 模型:

class OrganizationModel extends ChangeNotifier {
  ...

  var orgService = new OrganizationService();
  ...

  Future fetch() async {
    List res = await orgService.fetch();
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

最后,关于OrganizationService

class OrganizationService {
  final LocalStorage storage = new LocalStorage('my_app_session');

  _token() {
    var token = storage.getItem('token');
    print(token);
    return token;
  }
}
Run Code Online (Sandbox Code Playgroud)

问题token总是返回null。我通过 setItem() 尝试了另一个新条目只是为了测试它,它完全用新条目替换了整个本地存储,就好像它看不到现有条目一样。

根据我的工作流程,有什么想法为什么会发生这种情况吗?

小智 6

var ready = await storage.ready; 
print('searching ${key} is $ready'); 
dynamic userJson = storage.getItem(key);
Run Code Online (Sandbox Code Playgroud)

只需检查 storage.ready 并搜索项目即可。