Поиск аудио не работает с пакетом Audioplayers

Мне нужно сделать приложение для прослушивания аудио, и для этого нужно реализовать искатель. Теперь я могу слушать аудио, а также могу приостановить его, но когда я ищу аудио, оно начинается снова. Для этого я использовал версию пакета Audioplayers(https://pub.dev/packages/audioplayers): ^0.20.1.

      import 'package:audioplayers/audioplayers.dart';
import 'package:flutter/material.dart';
class PlayAudio extends StatefulWidget {
  const PlayAudio({Key? key}) : super(key: key);

  @override
  State<PlayAudio> createState() => _PlayAudioState();
}

class _PlayAudioState extends State<PlayAudio> {

  var value=0.0;
  bool isPlaying=false;
  Duration duration=const Duration();
  Duration position=const Duration();
  AudioPlayer audioPlayer=AudioPlayer();

  // AudioPlayer player = AudioPlayer();
@override
  void initState() {
    // TODO: implement initState
    super.initState();
    audioPlayer.onPlayerStateChanged.listen((event) {
      setState((){
        isPlaying=event==PlayerState.PLAYING;
      });
    });
 ///listen to audio duration
    audioPlayer.onDurationChanged.listen((event) {
      setState((){
        duration=event;
      });
    });

    audioPlayer.onAudioPositionChanged.listen((event) {
      setState((){
        position=event;
      });
    });
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [

            InkWell(
              onTap: ()async{

                if(isPlaying){
                  await audioPlayer.pause();
                }else if(!isPlaying){
                  String url="https://www.learningcontainer.com/wp-content/uploads/2020/02/Kalimba.mp3";
                  await audioPlayer.play(url);
                }




              },
              child: Container(
                color: Colors.red,
                child: const Padding(
                  padding: EdgeInsets.all(8.0),
                  child: Text("play Audio"),
                ),
              ),
            ),
        Slider.adaptive(
            min: 0.0,
            value: position.inSeconds.toDouble(),
            max: 120,
            onChanged: (value1)async{
                  
              Duration newDuration = Duration(seconds: value1.toInt());
              await audioPlayer.seek(newDuration);


            }),
            Text(formatTime(position)),
            Text(formatTime(duration-position)),




          ],
        ),
      ),
    );
  }
 

  String formatTime(Duration duration){
    String twoDigits(int n)=>n.toString().padLeft(2,"0");
    final hours=twoDigits(duration.inHours);
    final minutes=twoDigits(duration.inMinutes.remainder(60));
    final seconds=twoDigits(duration.inSeconds.remainder(60));
    return [
      if(duration.inHours>0) hours,minutes,seconds
    ].join(":");
  }
}

когда я проверил это на симуляторе IOS, он работал нормально, но на реальном устройстве Android он показал проблему.

0 ответов

Другие вопросы по тегам