flutter - Flutter - 存储经过身份验证的用户详细信息
问题描述
我是 Flutter 的新手,我正在编写一个需要用户登录的应用程序。我已经有一个为我提供 JWT 的 API。然后我使用安全存储库存储它。
一旦用户使用令牌获得 200 OK,我想向服务器发送另一个请求以检索用户的详细信息并将其存储在一种单例类中,这样我就可以在应用程序中使用它,直到他注销。现在有很多流行语向我抛出,提供者和 BLoC。
我想知道在应用程序中存储当前登录用户详细信息的最佳做法是什么?以前我一直知道将数据存储在单例类中。但是现在我不确定我应该写一个单例类还是一个提供者?(我对提供者和 BLoC 如何工作的知识仍然生疏)。
解决方案
开始简单
存储数据的一个简单起点(我假设是键/值对的形式)将使用共享首选项。
什么是共享偏好
Shared Preferences 的主要用途是保存用户偏好、设置,可能还有数据(如果不是太大),以便下次启动应用程序时,可以检索和使用这些信息。
如何使用
设置 Shared Preferences 的实例变量并将值与键标识符一起存储。任何时候您想在应用程序启动时检索该值,只需使用密钥获取它。请参阅下面的示例设置和获取存储的用户名。
Future<bool> setUserName(String value) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.setString("username",value);
}
Future<String> getUserName(String value) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString("username");
}
安装 要安装共享首选项,请将其添加到包的 pubspec.yaml 文件中:
dependencies:
shared_preferences: ^0.5.7+3
更多信息在包页面。
推荐阅读
- laravel - 什么时候在 Laravel 中使用请求?
- python - IndexError:二维数组上标量变量的索引无效?
- html - (组件)HTML中的Ngx-datatable错误如何使用下拉框按列名对表进行排序(Angular 7)
- r - 使用带有向量的 dplyr 子集数据框
- python - Heroku Django 应用程序错误:gunicorn.errors.HaltServer:
- wireshark-dissector - 自定义wireshark运行时看不到编译好的插件?
- excel - objConnectionVS.Execute 做什么以及是否有相同功能的替代品
- angular - 删除 jhi-page-ribbon 会破坏 loginService 上的 accountService 注入
- javascript - 下一个 js 中的 HTTPS 重定向
- google-apps-script - 在电子表格 onOpen 中包含父文件夹名称