尝试在后台执行操作时出现 MissingPluginException
Posted
技术标签:
【中文标题】尝试在后台执行操作时出现 MissingPluginException【英文标题】:I get MissingPluginException when trying to do things in background 【发布时间】:2021-10-15 15:07:25 【问题描述】:我的大部分后台代码都以MissingPluginException
结尾,我不知道为什么,但我按照它说的实现了一切;
我尝试了所有可能的在线解决方案,但没有任何效果;
现在,当我尝试使用 android-home-widget 播放音频时,我正面临着 audio_service 插件
home_widget插件;
最小代码:
AudioPlayerTask audioPlayerTask;
void homeWidgetBackgroundCallback(Uri data) async
WidgetsFlutterBinding.ensureInitialized();
if(audioPlayerTask == null)
audioPlayerTask = AudioPlayerTask();
await AudioserviceBackground.run(() => audioPlayerTask);
AudioServiceBackground.state.playing ? audioPlayerTask.onPause() : audioPlayerTask.onPlay();
void main() async
WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());
HomeWidget.registerBackgroundCallback(homeWidgetBackgroundCallback);
错误信息:
2021-08-12 10:49:25.444 25804-25849/com.******* E/flutter: [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: MissingPluginException(No implementation found for method ready on channel ryanheise.com/audioServiceBackground)
#0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:156:7)
<asynchronous suspension>
#1 AudioServiceBackground.run (package:audio_service/audio_service.dart:1271:24)
<asynchronous suspension>
#2 homeWidgetBackgroundCallback (package:*******/main.dart:72:7)
<asynchronous suspension>
扑医生:
[√] Flutter (Channel stable, 2.2.3, on Microsoft Windows [Version 10.0.19043.1151], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[√] Chrome - develop for the web
[√] Android Studio (version 4.1.0)
[√] IntelliJ IDEA Ultimate Edition (version 2020.1)
[√] VS Code, 64-bit edition (version 1.58.2)
[√] Connected device (3 available)
• No issues found!
出现此错误最多的插件是path_provider
插件,它永远不会在后台运行;
有什么建议吗?
编辑
github:https://github.com/ryanheise/audio_service/issues/789
【问题讨论】:
提供该异常的日志。 @VaibhavGoyal 查看更新 哦,这是一个颤振问题,对不起,我对颤振一无所知。我没有看到标签,对此感到抱歉,但我希望提供日志可以帮助某人找到答案。 iOS 还是 Android?如果是 Android,您可能没有按照 README 中的 Android 设置说明进行操作。 【参考方案1】:只需终止正在运行的进程,然后从头开始运行应用程序。
【讨论】:
【参考方案2】:这是 iOS 还是 Android?如果是 iOS,您必须注册要使用的插件才能与 HomeWidget 插件通信。这取自 Home_Widget 页面 - 在 flutter_workmanager 的情况下,通过添加:
WorkmanagerPlugin.setPluginRegistrantCallback registry in
GeneratedPluginRegistrant.register(with: registry)
到 AppDelegate.swift
【讨论】:
以上是关于尝试在后台执行操作时出现 MissingPluginException的主要内容,如果未能解决你的问题,请参考以下文章