首页 > 解决方案 > AudioCache 播放器不会延迟播放

问题描述

我正在尝试在应用程序启动时使用 AudioCache 播放音频资产序列。我想以第 8 拍(延迟 188 毫秒)播放音频。音频资产本身可以正常工作,AudioCache 播放器也是如此,但是当我尝试播放音符时,它们都播放得非常快。我使用了以下方法,但没有一个对我有用:

    //188ms because beat is eigth note
    player.play('note1.wav');
    Future.delayed(Duration(milliseconds: 188 ));
    player.play('note1.wav');
    Future.delayed(Duration(milliseconds: 188 ));
    player.play('note5.wav');
    Future.delayed(Duration(milliseconds: 188 ));
    player.play('note4.wav');
    Future.delayed(Duration(milliseconds: 188 ));
    player.play('note4.wav');
    Future.delayed(Duration(milliseconds: 188 ));
    player.play('note3.wav');
    Future.delayed(Duration(milliseconds: 188 ));
    player.play('note4.wav');
    Future.delayed(Duration(milliseconds: 188 ));
    player.play('note5.wav');

还有这个:

    Timer(Duration(milliseconds: 188 ), () => player.play('note1'));
    Timer(Duration(milliseconds: 188 ), () => player.play('note1'));
    Timer(Duration(milliseconds: 188 ), () => player.play('note5'));
    Timer(Duration(milliseconds: 188 ), () => player.play('note4'));
    Timer(Duration(milliseconds: 188 ), () => player.play('note4'));
    Timer(Duration(milliseconds: 188 ), () => player.play('note3'));
    Timer(Duration(milliseconds: 188 ), () => player.play('note4'));
    Timer(Duration(milliseconds: 188 ), () => player.play('note5'));

我把它写在一个在 build(context) 内部调用的函数中。我需要在这里使用另一个延迟功能吗?

标签: flutterdart

解决方案


尝试将它们链接在一起,如下所示:

Future.delayed(const Duration(milliseconds: 188), () {
   player.play('note1.wav');
   Future.delayed(const Duration(milliseconds: 188), () {
        player.play('note5.wav');
        Future.delayed(const Duration(milliseconds: 188), () {
            player.play('note4.wav');
      }); // etc...
   });
});

推荐阅读