0

下面的代码显示了我如何使用没有音频服务的音频播放器

playFromFile(List textList, seek) async {
    for (int i = seek; i < textList.length; i++) {
      setState(() {
        newSeek = i;
      });
      itemScrollController.scrollTo(
          index: i,
          duration: const Duration(seconds: 2),
          curve: Curves.easeInOutCubic);
      String text = textList[i].join(' ');
      final bytes = await getAudio(text);
      await audioPlugin.playBytes(bytes);
      while (audioPlugin.state == PlayerState.PLAYING && !playFresh) {
        await Future.delayed(const Duration(seconds: 1));
        if (audioPlugin.state == PlayerState.PLAYING) {
          audioPlugin.onPlayerCompletion.listen((onDone) async {
            audioPlugin.state = PlayerState.COMPLETED;
            await audioPlugin.release();
          });
        }
        if (audioPlugin.state == PlayerState.COMPLETED) {
          await audioPlugin.release();
          break;
        }
      }

      if (playFresh) break;
    }
  }

我想使用音频服务来实现这个代码,这样我就可以在后台播放音频。如何使用音频服务实现此功能,以便在后台播放。请帮助,因为我是新来的,并且几天都无法解决这个问题。

4

1 回答 1

0

解决方案将非常简单。您使用不同的层来实现它。

UI 层 - 这将是您单击播放按钮的 UI。

中间层或音频服务层(音频服务类) - 从您的 UI 层,您将调用此音频服务类播放方法。

最后一层(实际音频播放器方法)- 这将是您的实际音频包方法所在的最后一层。您从中间层调用了该层。

总结 - UI层播放按钮 -> 音频服务播放方法 -> 音频播放器播放方法

于 2022-01-29T11:48:43.817 回答