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

Flutter后台调用shared_preferences出现MissingPluginException错误问询

问题原因

flutter_background_service: ^0.1.5 运行后台任务时会启动独立的Flutter引擎实例,默认不会自动注册第三方原生插件,因此后台isolate中调用shared_preferences相关方法时,找不到对应原生端实现,就会抛出MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences)异常,前台运行时使用的是主引擎,已完成所有插件注册所以运行正常。

解决方案

Dart层适配(优先尝试)

在后台服务的入口函数最开头完成初始化绑定即可:

// 后台服务入口必须加vm:entry-point注解避免被打包优化裁剪
@pragma('vm:entry-point')
void onBackgroundStart(ServiceInstance service) async {
  // 新增下面两行代码
  WidgetsFlutterBinding.ensureInitialized();
  await SharedPreferences.getInstance();

  // 后续写你的原有后台业务逻辑
}

注意:后台服务入口函数必须加@pragma('vm:entry-point')注解,否则会被Dart编译器在release打包时裁剪,导致后台服务无法启动
大部分场景下做完这一步即可解决问题。

原生层适配(Dart层不生效时使用)

Android端

找到安卓项目下app/src/main/kotlin/你的包名/MainApplication.kt文件,添加插件注册逻辑:

import io.flutter.app.FlutterApplication
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin

class MainApplication : FlutterApplication() {
    override fun onCreate() {
        super.onCreate()
        // 全局注册shared_preferences插件
        FlutterEngine(this).plugins.add(SharedPreferencesPlugin())
    }
}

iOS端

找到iOS项目下Runner/AppDelegate.swift文件,添加注册逻辑:

import UIKit
import Flutter
import shared_preferences_ios

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GeneratedPluginRegistrant.register(with: self.flutterEngine!)
    // 额外注册shared_preferences插件
    FLTSharedPreferencesPlugin.register(with: self.flutterEngine!.binaryMessenger)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

终极适配方案

如果以上步骤仍有问题,可升级依赖版本:

  • 将flutter_background_service升级到^2.4.6及以上版本,该版本之后默认已处理多引擎下插件自动注册逻辑
  • 同步升级shared_preferences到^2.2.2及以上版本,适配新版插件注册机制
    升级后注意调整API调用适配新版依赖的变更即可。

内容的提问来源于stack exchange,提问作者Ahmed El-Shingiti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:24:03