Advertisement
jevixlugya

Untitled

Apr 16th, 2024
557
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 3.63 KB | None | 0 0
  1. import 'package:audioplayers/audioplayers.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:path/path.dart';
  4.  
  5.  
  6. class playaudios extends StatefulWidget {
  7. //a url that will be fetchde from database
  8.   final String url;
  9.  
  10.  
  11.   const playaudios({super. key,required this.url});
  12.  
  13.   @override
  14.   State<playaudios> createState() => _playaudiosState();
  15. }
  16.  
  17. class _playaudiosState extends State<playaudios> {
  18.   final audioPlayer=AudioPlayer();
  19.   bool isPlaying=false;
  20.   Duration duration=Duration.zero;
  21.   Duration position=Duration.zero;
  22.   @override
  23.   void initState(){
  24.     super.initState();
  25.     //Listen to states:playing, pause,stopped
  26.     audioPlayer.onPlayerStateChanged.listen((state) {
  27.       setState(() {
  28.         isPlaying=state==PlayerState.playing;
  29.       });
  30.  
  31.     });
  32.     //Listen to audio duration
  33.     audioPlayer.onDurationChanged.listen((newDuration) {
  34.       setState(() {
  35.         duration=newDuration;
  36.       });
  37.     }) ;
  38.    //Listen to audio position
  39.     audioPlayer.onPositionChanged.listen((newDuration){
  40.       setState(() {
  41.         position=newDuration;
  42.       });
  43.     });
  44.     audioPlayer.onPlayerComplete.listen((state) {
  45.       setState(() {
  46.        // audioPlayer.setReleaseMode(ReleaseMode.loop);
  47.       });
  48.     });
  49.   }
  50.   @override
  51.   void dispose(){
  52.     audioPlayer.dispose();
  53.     super.dispose();
  54.   }
  55.   String formatTime(Duration duration){
  56.     String twoDigits(int n)=>n.toString().padLeft(2,'0');
  57.     final hours=twoDigits(duration.inHours);
  58.     final minutes=twoDigits(duration.inMinutes.remainder(60));
  59.     final seconds=twoDigits(duration.inSeconds.remainder(60));
  60.  
  61.     return [
  62.       if (duration.inHours > 0 )hours,
  63.       minutes,
  64.       seconds,
  65.     ].join(':');
  66.  
  67.   }
  68.   @override
  69.   Widget build(BuildContext context) {
  70.     return Container(
  71.               height: 80,
  72.               //color: Colors.purple,
  73.               decoration: BoxDecoration(
  74.                   color: Colors.black26,
  75.                 borderRadius: BorderRadius.circular(30)
  76.               ),
  77.               child: Padding(
  78.                 padding: const EdgeInsets.all(2.0),
  79.                 child: Row(
  80.                   children: [
  81.                     CircleAvatar(
  82.                       radius: 35,
  83.                       child: IconButton(
  84.                         icon:Icon(
  85.                           isPlaying ? Icons.pause: Icons.play_arrow,
  86.  
  87.                         ),
  88.  
  89.  
  90.                         iconSize:40,
  91.                         onPressed: ()async{
  92.                           //await audioPlayer.audioCache.clearAll(),
  93.                           if (isPlaying){
  94.                             await audioPlayer.pause();
  95.                           }else{
  96.                             //String url='https://firebasestorage.googleapis.com/v0/b/sda-community.appspot.com/o/postfiles%2FLowooza%20ku%20maka.mp3?alt=media&token=6081c2e7-4f41-40b0-860a-63ff4b281832';
  97.                             await audioPlayer.play(UrlSource('$url'));
  98.  
  99.                           }
  100.                         },
  101.                       ),
  102.                     ),
  103.                    Slider(
  104.                      min: 0,
  105.                      value: position.inSeconds.toDouble(),
  106.                      max: duration.inSeconds.toDouble(),
  107.  
  108.                      onChanged: (value) async {
  109.                        final position=Duration(seconds: value.toInt());
  110.                        await audioPlayer.seek(position);
  111.                        await audioPlayer.resume();
  112.                      },
  113.                    ),
  114.                     Text(formatTime(duration-position))
  115.  
  116.  
  117.                   ],
  118.                 ),
  119.               ),
  120.  
  121.     );
  122.  
  123.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement