仅音频中的自定义操作通知图标
custom action notification icons in just audio
如何为通知图标提供可选功能?
除了图标的正常功能外,我想给图标赋予其他可选功能
例如,在下一次点击之后,执行另一个函数并且..
其实我想听听主要动作的变化(下一个,上一个,暂停..)
如果您查看官方 audio_service 示例,特别是 example/lib/example_multiple_handlers.dart,您会发现它定义了 skipToQueueItem
方法来执行“正常功能”,例如查找所请求的项目:
@override
Future<void> skipToQueueItem(int index) async {
// Then default implementations of skipToNext and skipToPrevious provided by
// the [QueueHandler] mixin will delegate to this method.
if (index < 0 || index >= queue.value.length) return;
// This jumps to the beginning of the queue item at newIndex.
_player.seek(Duration.zero, index: index);
// Demonstrate custom events.
customEvent.add('skip to $index');
}
如果你想做自定义的事情,只需在这个方法的末尾添加你的自定义代码。请注意,在示例中,skipToNext
和 skipToPrevious
的回调只是委托给上述方法,以便在上面的这个地方处理跳转到曲目。
In fact, I want to listen to the changes of the main actions (next, previous, pause ..)
方法完全一样。只需覆盖这些回调中的每一个并处理每个回调以首先执行“正常功能”,然后执行您的自定义代码。
例如,您可以像这样覆盖 skipToNext
:
@override
Future<void> skipToNext() async {
// Do the normal functions
await _player.seekToNext();
// Add your custom code here
}
每个回调的方法都是相同的,所以您需要做的就是查看文档以查看所有可用回调的列表(例如 pause
),然后覆盖您需要的每个回调并使用上述方法实现它。首先,执行正常功能,然后执行您的自定义代码。
如何为通知图标提供可选功能?
除了图标的正常功能外,我想给图标赋予其他可选功能 例如,在下一次点击之后,执行另一个函数并且..
其实我想听听主要动作的变化(下一个,上一个,暂停..)
如果您查看官方 audio_service 示例,特别是 example/lib/example_multiple_handlers.dart,您会发现它定义了 skipToQueueItem
方法来执行“正常功能”,例如查找所请求的项目:
@override
Future<void> skipToQueueItem(int index) async {
// Then default implementations of skipToNext and skipToPrevious provided by
// the [QueueHandler] mixin will delegate to this method.
if (index < 0 || index >= queue.value.length) return;
// This jumps to the beginning of the queue item at newIndex.
_player.seek(Duration.zero, index: index);
// Demonstrate custom events.
customEvent.add('skip to $index');
}
如果你想做自定义的事情,只需在这个方法的末尾添加你的自定义代码。请注意,在示例中,skipToNext
和 skipToPrevious
的回调只是委托给上述方法,以便在上面的这个地方处理跳转到曲目。
In fact, I want to listen to the changes of the main actions (next, previous, pause ..)
方法完全一样。只需覆盖这些回调中的每一个并处理每个回调以首先执行“正常功能”,然后执行您的自定义代码。
例如,您可以像这样覆盖 skipToNext
:
@override
Future<void> skipToNext() async {
// Do the normal functions
await _player.seekToNext();
// Add your custom code here
}
每个回调的方法都是相同的,所以您需要做的就是查看文档以查看所有可用回调的列表(例如 pause
),然后覆盖您需要的每个回调并使用上述方法实现它。首先,执行正常功能,然后执行您的自定义代码。