我正在使用 FlutterSecureStorage 来存储某些项目,即访问服务器端资源的 API 令牌。但是,我遇到了一个奇怪的问题。我不得不删除数据库(因为我仍处于测试模式,目前这种情况经常发生),这也删除了所有令牌。但是当应用程序尝试连接时,它会出错。
在 Android 上,这没什么大不了的。我只是卸载并重新安装该应用程序,它会下载一个新的令牌。
在 iOS 上,有一个问题。由于 FlutterSecureStorage 将任何信息存储在钥匙串中,因此即使卸载应用程序,数据也不会被删除。所以在我重新安装它后,它仍然从存储中获取令牌,我无法刷新令牌。
我的问题是:在 Flutter 中安装或卸载期间,是否有某种方法可以运行代码来删除所有存储项?
Tim*_*ers 28
在 iOS 上,您可以使用NSUserDefaults,它会在应用程序卸载时被删除。这样您就可以检查应用程序是否在卸载后第一次启动。使用shared_preferencesFlutter 插件来利用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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5725 次 |
| 最近记录: |