首页 > 解决方案 > 一段时间后,我想用android_alarm_manager插件在后台关闭audio_service

问题描述

一段时间后,我想用android_alarm_manager插件在后台关闭audio_service 。我怎么解决这个问题?

当我尝试执行此操作时,出现以下错误。

[错误:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:MissingPluginException(在通道 ryanheise.com/audioService 上找不到方法停止的实现)

我的代码如下。

动作飞镖

 FlatButton(
         onPressed: () async {
              await AndroidAlarmManager.oneShot(Duration(minutes: _minute.floor().toInt()), 0, backgroundCallback);
              Navigator.pop(context);
         },
         child: Text(S.of(context).set),
    )

主要.dart

void backgroundCallback() async {
  AudioService.connect();
  AudioService.stop();
}

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  init();
  await sl<DotEnv>().load('.env');

  //get theme
  bool _isDarkTheme = await sl<SharedPreferenceHelper>().isDarkTheme() ?? false;

  if (Platform.isAndroid) {
    AndroidAlarmManager.initialize();
  }

  runApp(MainApp());
}

Flutter 和 Dart 版本:

[√] Flutter (Channel stable, v1.12.13+hotfix.9, on Microsoft Windows [Version 10.0.18362.720], locale tr-TR)
    • Flutter version 1.12.13+hotfix.9 at D:\flutter
    • Framework revision f139b11009 (11 days ago), 2020-03-30 13:57:30 -0700
    • Engine revision af51afceb8
    • Dart version 2.7.2

标签: flutterdartalarmmanagerbackgroundworkerflutter-dependencies

解决方案


你有正确的想法,虽然你必须等到它使用“等待”实际连接:

await AudioService.connect();
AudioService.stop();

为此,您还需要升级到 CHANGELOG 中提到的 0.9.0 或更高版本:

  • 允许来自后台上下文的连接(例如 android_alarm_manager)。

推荐阅读