Untitled
unknown
plain_text
a year ago
5.9 kB
3
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