Flutter iOS端SharedPreferences报MissingPluginException问题求助
可行修复方案
1. 彻底重建iOS依赖与项目
- 执行
flutter clean清理项目缓存 - 删除iOS目录下的
Pods文件夹 - 进入iOS目录,先后执行
pod deintegrate和pod install - 返回项目根目录执行
flutter pub get - 用Xcode打开
ios/Runner.xcworkspace,按Cmd+Shift+K清理构建缓存后重新运行
2. 确认插件注册逻辑
- 检查
ios/Runner/AppDelegate.swift(或Objective-C的AppDelegate.m):- Swift版本需确保存在
GeneratedPluginRegistrant.register(with: self)代码 - Objective-C版本需确保存在
[GeneratedPluginRegistrant registerWithRegistry:self];代码
- Swift版本需确保存在
- 若使用Flutter 3.10+的
FlutterViewController场景,确认插件注册逻辑未被误删
3. 修正SharedPreferences初始化时机
- 避免启动时同步调用SharedPreferences方法,改用异步初始化:
void main() async { WidgetsFlutterBinding.ensureInitialized(); await SharedPreferences.getInstance(); runApp(const MyApp()); }
- 注意:
setMockInitialValues仅用于测试场景,不能作为生产环境的临时修复,这会导致重启后数据清空
4. 检查版本兼容性
- 查看
pubspec.yaml中shared_preferences的版本,确保与当前Flutter SDK兼容,可执行flutter pub upgrade shared_preferences升级到最新稳定版
5. 验证Xcode构建配置
- 在Xcode的
Runner目标中,确认Build Phases->Embed Frameworks包含shared_preferences相关框架 - 检查
Build Settings中的Other Linker Flags是否包含-ObjC
内容的提问来源于stack exchange,提问作者Shebin PR
相关产品推荐
相关产品推荐

