首页 > 解决方案 > Flutter:如何在安装/卸载期间删除 FlutterSecureStorage 项目

问题描述

我正在使用 FlutterSecureStorage 存储某些项目,即访问服务器端资源的 API 令牌。但是,我遇到了一个奇怪的问题。我不得不删除数据库(因为我仍处于测试模式,目前这种情况经常发生),这也删除了所有令牌。但是当应用程序尝试连接时,它会出现错误。

在 Android 上,这没什么大不了的。我只是卸载并重新安装应用程序,它会下载一个新的令牌。

在 iOS 上,有一个问题。由于 FlutterSecureStorage 将任何信息存储在钥匙串中,因此即使卸载了应用程序,数据也不会被删除。所以在我重新安装它之后,它仍然从存储中获取令牌,我无法刷新令牌。

我的问题是:在 Flutter 中安装或卸载期间,是否有某种方法可以运行代码来删除所有存储项?

标签: iosflutter

解决方案


在 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);
}

推荐阅读