我已经解决这个问题将近半天了。我正在尝试使用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
}