【问题标题】:Flutter localstorage.getItem() returns nullFlutter localstorage.getItem() 返回 null
【发布时间】:2020-11-10 00:52:29
【问题描述】:

我正在使用一个名为 localstorage 的 Flutter 包来保存我从 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');
  });
}

然后来自 ChangeNotifier 模型:

class OrganizationModel extends ChangeNotifier {
  ...

  var orgService = new OrganizationService();
  ...

  Future fetch() async {
    List res = await orgService.fetch();
    ...
  }
}

最后,在OrganizationService

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

  _token() {
    var token = storage.getItem('token');
    print(token);
    return token;
  }
}

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

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

【问题讨论】:

    标签: flutter local-storage


    【解决方案1】:
    var ready = await storage.ready; 
    print('searching ${key} is $ready'); 
    dynamic userJson = storage.getItem(key);
    

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

    【讨论】:

      猜你喜欢
      • 2019-05-28
      • 2020-08-23
      • 2021-09-28
      • 2020-07-12
      • 2021-06-14
      • 2018-08-03
      • 2021-04-19
      • 2021-06-29
      • 2020-12-29
      相关资源
      最近更新 更多