【问题标题】:How to loop the audio to keep playing until 3 times-Flutter如何循环播放音频以一直播放到 3 次-Flutter
【发布时间】:2022-01-24 06:47:59
【问题描述】:

我目前正在使用audioplayers: ^0.20.1 播放和恢复视频,现在我想循环播放音频 3 次(继续循环播放音频)。据我所知audioplayers 包有loop 属性,但我仍然不知道如何自定义loop 属性

【问题讨论】:

    标签: flutter loops dart audio


    【解决方案1】:

    以下是您可以循环播放音频播放器的方法:

    import 'package:audioplayers/audioplayers.dart';
    import 'package:flutter/material.dart';
    
    void main() {
      runApp(MaterialApp(home: AudioPlayerLoopTesting()));
    }
    
    class AudioPlayerLoopTesting extends StatefulWidget {
      @override
      _AudioPlayerLoopTestingState createState() => _AudioPlayerLoopTestingState();
    }
    
    class _AudioPlayerLoopTestingState extends State<AudioPlayerLoopTesting> {
      AudioCache audioCache = AudioCache();
    
      @override
      void initState() {
        super.initState();
      }
    
      @override
      void dispose() {
        super.dispose();
      }
    
      void _playLoopAudio() {
        int timesPlayed = 0;
        const timestoPlay = 3;
        //audio.mp3 is the local asset file
        audioCache.play('audio.mp3').then((player) {
          player.onPlayerCompletion.listen((event) {
            timesPlayed++;
            if (timesPlayed >= timestoPlay) {
              timesPlayed = 0;
              player.stop();
            } else {
              player.resume();
            }
          });
        });
      }
    
      Widget localAsset() {
        return Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text('Loop Local Asset'),
            ElevatedButton(
              child: const Text('Loop the audio'),
              onPressed: _playLoopAudio,
            ),
          ],
        );
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Center(
            child: localAsset(),
          ),
        );
      }
    }
    
    

    如果问题解决,请点赞

    【讨论】:

      【解决方案2】:

      要循环播放音频试试这个:-

      static AudioCache musicCache;
      static AudioPlayer instance;
      
      void playLoopedMusic() async {
      musicCache = AudioCache(prefix: "audio/");
      instance = await musicCache.loop("bgmusic.mp3");
      // await instance.setVolume(0.5); you can even set the volume
      }
      
      void pauseMusic() {
      if (instance != null) {
      instance.pause(); }}
      

      只循环 3 次:-

      int numberOftimesToPlay=0;
      playThreeTimes(){
        _audioPlayer = AudioPlayer();
              int res = await _audioPlayer.play("https://192.168.1.66/$sUrl");
              //await _audioPlayer.play("http://192.168.1.5/00001.mp3");
              if (res == 1 & numberOftimesToPlay>4) {
                numberOftimesToPlay ++;
                playThreeTimes()
                print("ok");
              } else {
                print("done");
              }}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-07
        • 1970-01-01
        • 2017-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多