new just

 avatar
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