如何修复:在通道 plugins.flutter.io/shared_preferences 上找不到方法 getAll 的实现

Awe*_*165 4 sharedpreferences dart flutter

我已经研究这个问题近半天了。我正在尝试使用 Flutter 的 SharedPreferences 包将键/值存储在应用程序的存储中。当我通过 新建 SharedPreferences 时await SharedPreferences.getInstance(),它会正确构建并运行,但是当应用程序到达该代码行时,它会崩溃并出现以下错误:

MissingPluginException (MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences))

我找到了其他 Stackoverflow 帖子,但它们没有帮助解决这个问题:

通过所有这些,我尝试了以下方法:

  • flutter pub get
  • io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin.registerWith(registry.registrarFor("io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin"));
  • 由于我使用的是 iOS:SharedPreferencesIOS.registerWith();
  • https://pub.dev/packages/flutter_isolate
  • flutter clean && flutter pub get
  • SharedPreferences.setMockInitialValues({});

运行/执行上述步骤后,我重新启动了编辑器(VSC)。我什至安装了带有 Flutter 扩展的 Android Studio 并尝试了它,但它不起作用。我尝试从命令行运行,但它仍然返回相同的错误。我尝试重新启动计算机并卸载并重新安装 flutter 和 dart 来搞笑。我现在真的不知道该怎么办。我缺少哪些步骤?

小智 13

在使用共享首选项之前,将其添加到您的代码中。

SharedPreferences.setMockInitialValues({});
Run Code Online (Sandbox Code Playgroud)

这是因为如果你在什么都没有的地方使用getAll,它会发疯。我不认为这与iOS有什么关系。即使你使用普通的getString,内部程序使用getAll,所以它仍然会崩溃。

解决这个问题的方法是将其放入 try 和 catch 语句中。在try中,调用sharedPreferences.get并捕获错误,然后执行setMockInitialValues。如果sharedPreferences.get没有给出错误,则意味着已经存在我不确定的datai。你能试一下吗。


归档时间:

查看次数:

5446 次

最近记录:

2 年,7 月 前