Untitled

 avatar
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