new just
unknown
plain_text
2 years ago
5.4 kB
7
Indexable
import 'dart:async';
import 'dart:developer';
import 'package:audioplayers/audioplayers.dart';
import 'package:flutter/material.dart';
import 'package:gurbani_app/controllers/miniPlayerVisibilityProvider.dart';
import 'package:gurbani_app/widgets/AudioPlayerHandler.dart';
import 'package:gurbani_app/widgets/constraints.dart';
import 'package:audio_service/audio_service.dart';
import 'package:provider/provider.dart';
class JustMusicPlay extends StatefulWidget {
final String audioLink;
final String thumbnailLink;
final String headingName;
final String albumName;
final String heroTag;
final AudioPlayer audioPlayer;
final AudioHandler audioHandler; // Use AudioHandler instead of AudioPlayer
const JustMusicPlay({
Key? key,
required this.audioLink,
required this.thumbnailLink,
required this.headingName,
required this.heroTag,
required this.audioHandler, // Pass AudioHandler instead of AudioPlayer
required this.audioPlayer,
required this.albumName,
}) : super(key: key);
@override
State<JustMusicPlay> createState() => _JustMusicPlayState();
}
class _JustMusicPlayState extends State<JustMusicPlay> {
bool isPlaying = false;
late StreamSubscription<PlaybackState> _playbackStateSubscription;
@override
void initState() {
super.initState();
playSongs();
_playbackStateSubscription =
widget.audioHandler.playbackState.listen((playbackState) {
final playing = playbackState.playing;
if (!playing && isPlaying) {
widget.audioHandler.pause();
Navigator.pop(context);
}
setState(() {
isPlaying = playing;
});
});
}
@override
void dispose() {
_playbackStateSubscription.cancel();
super.dispose();
}
void playSongs() async {
try {
await widget.audioHandler.stop();
await widget.audioHandler.addQueueItem(MediaItem(
id: widget.audioLink,
album: widget.albumName,
title: widget.headingName,
artUri: Uri.parse(widget.thumbnailLink),
));
widget.audioHandler.play();
} catch (e) {
log("ERROR PARSING DATA: $e");
}
}
@override
Widget build(BuildContext context) {
MiniPlayerVisibilityProvider provider =
Provider.of<MiniPlayerVisibilityProvider>(context, listen: false);
print(widget.audioLink);
return Scaffold(
appBar: AppBar(
elevation: 0,
title: Text(widget.headingName, style: const TextStyle(fontSize: 22)),
backgroundColor: kplayer,
leading: IconButton(
icon: const Icon(Icons.arrow_back_sharp),
color: Colors.white,
onPressed: () {
Navigator.pop(context);
},
),
actions: [
IconButton(
icon: const Icon(Icons.share),
onPressed: () {},
),
],
),
body: Container(
child: Column(
children: [
// Image of channel
Padding(
padding:
const EdgeInsets.only(top: 50.0, left: 14.0, right: 14.0),
child: ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(10.0)),
// Image code
child: Hero(
tag: widget.heroTag,
child: Image.network(
widget.thumbnailLink,
height: 370,
width: 500,
fit: BoxFit.cover,
),
),
),
),
// Player icons with func
Center(
child: Padding(
padding: const EdgeInsets.only(top: 38.0),
child: Row(
children: [
IconButton(
onPressed: () {},
iconSize: 50,
icon: const Icon(Icons.circle),
),
IconButton(
onPressed: () {
if (isPlaying) {
widget.audioHandler.pause(); // Pause the audio
} else {
widget.audioHandler.play(); // Play the audio
}
setState(() {
isPlaying = !isPlaying;
});
},
iconSize: 50,
icon: isPlaying
? const Icon(Icons.pause_circle)
: const Icon(Icons.play_circle),
),
IconButton(
onPressed: () {
if (isPlaying) {
widget.audioHandler.stop(); // Stop the audio
}
Navigator.pop(context);
provider.setMiniPlayerVisibility(false);
},
iconSize: 50,
icon: const Icon(Icons.stop_circle_outlined),
),
],
),
),
),
],
),
),
);
}
}
Editor is loading...
Leave a Comment