Flutter使用shared_preferences报MissingPluginException错误如何解决
通用解决步骤
- 确认pubspec.yaml中
shared_preferences依赖拼写正确,版本匹配当前Flutter SDK版本,执行flutter pub get重新拉取依赖。 - 插件引入后不要直接使用热重载/热重启运行,完全停止当前运行的应用进程,重新执行
flutter run启动项目,触发原生侧插件编译打包。 - 清空项目缓存重试:依次执行
flutter clean→flutter pub get,原生端(Android/iOS)对应重新构建项目后再运行。
分平台特殊处理
- Android平台:如果项目AGP版本≥8.0,检查
android/settings.gradle文件,确保没有关闭自动插件注册逻辑,旧迁移项目确认GeneratedPluginRegistrant中已自动注册SharedPreferencesPlugin。 - iOS平台:执行
flutter pub get后,进入项目ios目录执行pod install重新安装原生依赖,再启动项目。
代码优化建议
你当前代码存在重复初始化实例的问题,可按以下逻辑调整避免冗余调用:
- 调整main函数,提前完成初始化,避免运行时反复调用getInstance:
void main() async { WidgetsFlutterBinding.ensureInitialized(); await MyApp.init(); runApp(const MyApp()); }
- 登录页代码可直接复用全局prefs实例,无需重复获取:
var me3 = jsondata["dd"]; // 直接用全局初始化好的prefs变量,无需重复getInstance prefs.setString('id', "$me3"); Navigator.push( context, MaterialPageRoute(builder: (context) => SearchPage()), );
内容的提问来源于stack exchange,提问作者jerome
相关产品推荐
相关产品推荐

