Untitled
unknown
plain_text
a year ago
5.9 kB
4
Indexable
// ignore_for_file: avoid_print
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:gurbani_app/controllers/miniPlayerVisibilityProvider.dart';
import 'package:gurbani_app/widgets/constraints.dart';
import 'package:just_audio/just_audio.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;
const JustMusicPlay({
Key? key,
required this.audioLink,
required this.thumbnailLink,
required this.headingName,
required this.heroTag,
required this.audioPlayer,
required this.albumName,
}) : super(key: key);
@override
State<JustMusicPlay> createState() => _JustMusicPlayState();
}
class _JustMusicPlayState extends State<JustMusicPlay> {
bool isPlaying = false;
@override
void initState() {
playSongs();
newMethod();
print("=================MEDIA-ITEM====================");
print(newMethod());
super.initState();
}
playSongs() {
try {
widget.audioPlayer.setAudioSource(
AudioSource.uri(
Uri.parse(widget.audioLink),
tag: newMethod(),
),
);
if (widget.audioPlayer.playing) {
// this was the issue for notification not changing
setState(() {
widget.audioPlayer.stop();
});
}
widget.audioPlayer.play();
isPlaying = true;
print("audio link --------- ${widget.audioLink}");
print("thumbnail --------- ${widget.thumbnailLink}");
print("heading --------- ${widget.headingName}");
print("HERO TAG --------- ${widget.heroTag}");
} on Exception {
log("ERROR PARSING DATA");
}
}
MediaItem newMethod() {
return MediaItem(
id: widget.headingName,
album: widget.albumName,
title: widget.headingName,
artUri: Uri.parse(widget.thumbnailLink),
);
}
@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);
// navigatorKey.currentState!.pop();
},
),
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.audioPlayer.pause();
} else {
widget.audioPlayer.play();
}
setState(() {
isPlaying = !isPlaying;
});
},
iconSize: 50,
icon: isPlaying
? const Icon(Icons.pause_circle)
: const Icon(Icons.play_circle),
),
IconButton(
onPressed: () {
if (isPlaying) {
widget.audioPlayer.stop();
}
Navigator.pop(context);
provider.setMiniPlayerVisibility(false);
},
iconSize: 50,
icon: const Icon(Icons.stop_circle_outlined)),
],
),
),
),
],
),
),
);
}
void showBufferingDialog(BuildContext context) {
showDialog(
context: context,
barrierDismissible: false, // Prevent dismissing on tap outside
builder: (BuildContext context) {
return Dialog(
child: Container(
padding: const EdgeInsets.all(20),
child: const Column(
mainAxisSize: MainAxisSize.min,
children: [
LinearProgressIndicator(),
SizedBox(height: 20),
Text('Buffering...'),
],
),
),
);
},
);
}
}
Editor is loading...
Leave a Comment