You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中SharedPreferences报MissingPluginException问题求助

解决Flutter SharedPreferences的MissingPluginException问题

问题描述

使用SharedPreferences时持续触发以下错误:

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences_android)

已尝试flutter clean、flutter upgrade、重新安装应用均无效,使用SharedPreferences.setMockInitialValues({})仅能临时绕过问题,但重启应用后所有存储值会被重置为null,并非长期解决方案。

附flutter doctor输出:

[✓] Flutter (Channel master, 3.7.0-27.0.pre.25, on Ubuntu 20.04.2 LTS 5.15.0-58-generic, locale en_IL)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
[✓] Android Studio (version 2022.1)
[✓] VS Code (version 1.74.2)
[✓] Connected device (3 available)
[✓] HTTP Host Availability
• No issues found!

可行解决方案

  • 锁定SharedPreferences依赖版本:master通道Flutter可能和最新版插件存在兼容性问题,在pubspec.yaml中指定稳定版本,比如:

    dependencies:
      shared_preferences: ^2.2.2
    

    执行flutter pub get后重新编译。

  • 重新生成Android平台绑定代码:

    1. 进入项目android目录,执行./gradlew clean
    2. 返回根目录执行flutter pub get
    3. 重新执行flutter run安装应用
  • 修正初始化时机:不要在main()开头直接调用SharedPreferences,先确保Flutter引擎初始化完成:

    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      final prefs = await SharedPreferences.getInstance();
      runApp(MyApp(prefs: prefs));
    }
    
  • 切换到Flutter稳定通道:master通道为开发预览版,兼容性较差,执行以下命令切换后重新编译:

    flutter channel stable
    flutter upgrade
    flutter clean
    flutter pub get
    
  • 清除设备应用缓存和数据:在设备应用管理中找到你的应用,清除缓存和数据后,重新安装应用。

  • 检查AndroidManifest.xml配置:确认AndroidManifest.xml中没有干扰插件注册的配置,比如异常的meta-data项,确保配置无冲突。

内容的提问来源于stack exchange,提问作者FelX3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:25:24