Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:audioplayers/audioplayers.dart';
- import 'package:flutter/material.dart';
- import 'package:path/path.dart';
- class playaudios extends StatefulWidget {
- //a url that will be fetchde from database
- final String url;
- const playaudios({super. key,required this.url});
- @override
- State<playaudios> createState() => _playaudiosState();
- }
- class _playaudiosState extends State<playaudios> {
- final audioPlayer=AudioPlayer();
- bool isPlaying=false;
- Duration duration=Duration.zero;
- Duration position=Duration.zero;
- @override
- void initState(){
- super.initState();
- //Listen to states:playing, pause,stopped
- audioPlayer.onPlayerStateChanged.listen((state) {
- setState(() {
- isPlaying=state==PlayerState.playing;
- });
- });
- //Listen to audio duration
- audioPlayer.onDurationChanged.listen((newDuration) {
- setState(() {
- duration=newDuration;
- });
- }) ;
- //Listen to audio position
- audioPlayer.onPositionChanged.listen((newDuration){
- setState(() {
- position=newDuration;
- });
- });
- audioPlayer.onPlayerComplete.listen((state) {
- setState(() {
- // audioPlayer.setReleaseMode(ReleaseMode.loop);
- });
- });
- }
- @override
- void dispose(){
- audioPlayer.dispose();
- super.dispose();
- }
- 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(':');
- }
- @override
- Widget build(BuildContext context) {
- return Container(
- height: 80,
- //color: Colors.purple,
- decoration: BoxDecoration(
- color: Colors.black26,
- borderRadius: BorderRadius.circular(30)
- ),
- child: Padding(
- padding: const EdgeInsets.all(2.0),
- child: Row(
- children: [
- CircleAvatar(
- radius: 35,
- child: IconButton(
- icon:Icon(
- isPlaying ? Icons.pause: Icons.play_arrow,
- ),
- iconSize:40,
- onPressed: ()async{
- //await audioPlayer.audioCache.clearAll(),
- if (isPlaying){
- await audioPlayer.pause();
- }else{
- //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';
- await audioPlayer.play(UrlSource('$url'));
- }
- },
- ),
- ),
- Slider(
- min: 0,
- value: position.inSeconds.toDouble(),
- max: duration.inSeconds.toDouble(),
- onChanged: (value) async {
- final position=Duration(seconds: value.toInt());
- await audioPlayer.seek(position);
- await audioPlayer.resume();
- },
- ),
- Text(formatTime(duration-position))
- ],
- ),
- ),
- );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement