new just
unknown
plain_text
10 months ago
5.4 kB
3
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