如何让用户关闭在其他隔离中播放的铃声?
我正在使用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项目,以便您可以重现该问题: