ios - Flutter:如何在安装/卸载期间删除 FlutterSecureStorage 项目
问题描述
我正在使用 FlutterSecureStorage 存储某些项目,即访问服务器端资源的 API 令牌。但是,我遇到了一个奇怪的问题。我不得不删除数据库(因为我仍处于测试模式,目前这种情况经常发生),这也删除了所有令牌。但是当应用程序尝试连接时,它会出现错误。
在 Android 上,这没什么大不了的。我只是卸载并重新安装应用程序,它会下载一个新的令牌。
在 iOS 上,有一个问题。由于 FlutterSecureStorage 将任何信息存储在钥匙串中,因此即使卸载了应用程序,数据也不会被删除。所以在我重新安装它之后,它仍然从存储中获取令牌,我无法刷新令牌。
我的问题是:在 Flutter 中安装或卸载期间,是否有某种方法可以运行代码来删除所有存储项?
解决方案
在 iOS 上,您可以使用NSUserDefaults
,它会在应用程序卸载时被删除。这样,您可以检查应用程序是否在卸载后首次启动。使用shared_preferences
Flutter 插件来使用NSUserDefaults
.
此方法之前已在 StackOverflow 上针对其他平台进行过讨论,有关其他语言的示例,请参阅卸载应用程序时删除钥匙串项。
对于 Flutter,此示例将变为:
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:shared_preferences/shared_preferences.dart';
// ...
final prefs = await SharedPreferences.getInstance();
if (prefs.getBool('first_run') ?? true) {
FlutterSecureStorage storage = FlutterSecureStorage();
await storage.deleteAll();
prefs.setBool('first_run', false);
}
推荐阅读
- html - AFrame - 在 Worker 404 上加载标记时出错
- javascript - JavaScript 剪贴板应用程序无法正常工作,需要帮助
- json - JQ - 加入嵌套数组和过滤器
- azure - Azure 突触 TSQL
- python - discord.utils.escape_mentions 不起作用?
- python - PySpark SQL - 嵌套数组条件选择到新列
- haskell - (Monoid a) 没有因使用“mempty”而产生的实例
- python - 如何使用 Python 动态更新和运行 .bas 文件?
- python - 优化快速排序(在 python 中)
- c# - 在网格中查找具有最大可见度的点