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

monwx1rj  于 2023-01-09  发布在  Flutter
关注(0)|答案(2)|浏览(165)

这个问题我已经研究了将近半天了。我尝试使用Flutter的SharedPreferences包在应用存储中存储键/值。当我通过await SharedPreferences.getInstance()新建一个SharedPreferences时,它可以正常构建和运行,但是当应用到达那行代码时,它崩溃了,并出现以下错误:
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以获得笑声。我真的不知道在这一点上该怎么做。我错过了哪些步骤?

aij0ehis

aij0ehis1#

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

SharedPreferences.setMockInitialValues({});

因为如果你在什么都没有的地方使用getAll,它会发疯的,我觉得这和iOS没有关系,即使你使用正常的getString,内部程序使用getAll,它还是会崩溃。
你能做的就是把它放在一个try和catch语句中。在try中,调用sharedpreferences.get并捕捉错误,然后执行setMockInitialValues。如果sharedpreferences.get没有给予错误,这意味着已经有数据了,我不确定。你能试试吗?

roejwanj

roejwanj2#

我是这么做的

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

相关问题