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



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

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

我发现了其他Stackoverflow帖子,但它们并没有帮助解决这个问题

  • 在后台获取FCM时,MissingPluginException(在channel-plugins.flutter.io/shared_preferences上找不到方法getAll的实现(
  • 未处理的异常:MissingPluginException(对于flutter上的许多包,在通道plugins.flutter.io/上找不到方法getAll的实现
  • Flutter测试:MissingPluginException(在channel-plugins.Flutter.io/shared_preferences上找不到方法getAll的实现(
  • Flutter MissingPluginException(在通道上找不到方法getAll的实现…(
  • 未处理的异常:MissingPluginException(在通道it.example.watch上找不到方法flatterToWatch的实现(
  • Flutter:未处理的异常:MissingPluginException(在channel-plugins.Flutter.io/shared_preferences上找不到方法getAll的实现(
  • https://github.com/flutter/flutter/issues/98473

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

  • 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以获得乐趣。我真的不知道在这一点上该怎么办。我错过了哪些步骤?

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

SharedPreferences.setMockInitialValues({});

这是因为如果你在什么都没有的地方使用getAll,它会变得疯狂。我认为这与iOS没有任何关系。如果您甚至使用普通的getString,内部程序会使用getAll,所以它仍然会崩溃。

要解决这个问题,你可以把它放在try-and-catch语句中。在try中,调用sharedPreferences.get并捕获错误,然后执行setMockInitialValues。如果sharedPreferences.get没有给出错误,则表示已经有数据i我不确定。你能试试吗。

以下是我所做的

override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine) // add this line
}

相关内容

  • 没有找到相关文章

最新更新