Flutter:删除所有已保存的共享首选项。

57

当用户点击注销时,我希望删除所有已保存的共享首选项。有没有一种方法可以在一次性操作中完成而不是逐个删除?

7个回答

94

我使用 shared_preferences 插件:

pubspec.yaml 文件中:

dependencies:
  flutter:
    sdk: flutter

  shared_preferences: ^0.4.3

并且在 Dart 文件中:

import 'dart:async';
import 'package:shared_preferences/shared_preferences.dart';
...
SharedPreferences preferences = await SharedPreferences.getInstance();
await preferences.clear();

我认为这正是你所需要的。


1
preferences.clear(); 对我似乎没有起作用。 - Arnold Parge
1
如果您是在 preferences.clear(); 之后立即检查它,那么它可能是可以的。我没有提到,但它是一个异步操作,所以,也许您需要使用 await preferences.clear(); 并在此之后进行检查。 - Andrii Turkovskyi
我使用了 await - Arnold Parge
这很奇怪。我认为你最好创建一个新问题,并详细描述你的问题以及你所做的一切来解决它。 - Andrii Turkovskyi
请考虑更新答案为 "await preferences.clear();"。 - Learner
显示剩余5条评论

42

您可以使用clear()函数来清除所有共享首选项。

SharedPreferences preferences = await SharedPreferences.getInstance();
await preferences.clear();
如果您想从共享首选项中删除特定键值,可以按照以下方式进行操作。
SharedPreferences preferences = await SharedPreferences.getInstance();
await preferences.remove('KeyNameHere');

17

尝试

final pref = await SharedPreferences.getInstance();
await pref.clear();

3

只是尝试一下

prefManager = await SharedPreferences.getInstance();
await prefManager.clear();

1
清除所有共享首选项,请尝试以下操作:
SharedPreferences pref = await SharedPreferences.getInstance();
await pref.clear();

清除特定键值,请尝试以下操作:

SharedPreferences pref = await SharedPreferences.getInstance();
await pref.remove('KeyNameHere');

1
final preferences = await SharedPreferences.getInstance();
await preferences.clear();

请记住,Stack Overflow 不仅旨在解决当前的问题,还要帮助未来的读者找到类似问题的解决方案,这需要理解底层代码。对于我们社区中的初学者和不熟悉语法的成员来说,这尤其重要。鉴于此,您能否编辑您的答案,包括您正在做什么以及为什么您认为这是最好的方法的解释? - Jeremy Caney

1

清除共享首选项数据

  1. 您应该导入shared_preferences.dart库

  2. 将以下代码写入注销按钮:

    onPressed: () async { SharedPreferences userData = await SharedPreferences.getInstance(); await userData.clear(); }


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接