Flutter-如何让用户关闭在其他隔离中播放的铃声?

时间:2020-06-28 10:18:50

标签: flutter

如何让用户关闭在其他隔离中播放的铃声?

我正在使用Flutter应用中的Workmanager在callbackDispatcher中播放铃声。因此,铃声在另一种隔离中播放,因为Workmanager的callbackDispatcher在新的隔离中执行。

如何通过Workmanager的callbackDispatcher使用sendport's和receiveports,以便让用户关闭铃声?

这是Workmanager的初始化,在其中初始化了callbackDispatcher函数并注册了任务:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Workmanager.initialize(
      callbackDispatcher, // The top level function, aka callbackDispatcher
      isInDebugMode:
      true // If enabled it will post a notification whenever the task is running. Handy for debugging tasks
  );
  
  Workmanager.registerOneOffTask("1", "Simple task");

  runApp(MyApp());
}

这是执行铃声的顶级功能“ callbackDispatcher”:

void callbackDispatcher() {
  print('callbackDispatcher');
  Workmanager.executeTask((task, inputData) {

    FlutterRingtonePlayer.play(
      android: AndroidSounds.ringtone,
      ios: IosSounds.glass,
      looping: false,
      // Android only - API >= 28
      volume: 1,
      // Android only - API >= 28
      asAlarm: true, // Android only - all APIs
    );

    return Future.value(true);
  });
}

如何在主隔离区中使用sendport和receiveport与callbackDispatcher通信?

还是有其他方法可以让用户关闭铃声,即使铃声在其他隔离环境中执行?

我创建了这个Flutter项目,以便您可以重现该问题:

https://github.com/LarsNyborgPedersen/turnOffRingtone

0 个答案:

没有答案