Я получаю исключение MissingPluginException при попытке сделать что-то в фоновом режиме

Большая часть моего фонового кода заканчивается на MissingPluginException, Не знаю почему, но все реализую, как сказано; Я перепробовал все возможные онлайн-решения, но ничего не работает; теперь я сталкиваюсь с этим с плагином audio_service, когда пытаюсь воспроизвести звук из android-home-widget с плагина помощью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 плагин, он никогда не работает в фоновом режиме;

какие-нибудь предложения, пожалуйста?

2 ответа

Это iOS или Android? Если вы используете iOS, вам необходимо зарегистрировать плагин, который вы хотите использовать, чтобы иметь возможность общаться с плагином HomeWidget. Это взято со страницы Home_Widget - в случае flutter_workmanager это достигается добавлением:

      WorkmanagerPlugin.setPluginRegistrantCallback { registry in
    GeneratedPluginRegistrant.register(with: registry)
}

в AppDelegate.swift

просто завершите текущий процесс и запустите приложение с нуля.

Другие вопросы по тегам