Skip to content
Snippets Groups Projects
Select Git revision
  • 43c656c2352d19bd8eea2f38433419e27dd7eb46
  • master default
  • fix-remote-url_v4.9.1
  • fix-remote-url_v4.8.3
  • fix-remote-url_v4.8.x
  • fix-remote-url_v4.7.x
  • fix-remote-url_v4.6.0
  • fix-remote-urls
8 results

vle_specific.php

Blame
  • musicPlayerState.dart 3.95 KiB
    import 'dart:async';
    
    import 'package:flutter/services.dart';
    import 'package:flutter/widgets.dart';
    import 'package:flutter_dotenv/flutter_dotenv.dart';
    import 'package:spotify_sdk/models/image_uri.dart';
    import 'package:spotify_sdk/models/player_state.dart';
    import 'package:spotify_sdk/spotify_sdk.dart';
    
    
    class MusicPlayerState extends InheritedWidget {
      MusicPlayerState({super.key, required super.child});
    
      bool loading = false;
      bool connected = false;
      StreamController<void> rebuildStream = StreamController.broadcast();
      StreamController<void> playStatedStream = StreamController.broadcast();
      PlayerState? playerState;
      late ImageUri? currentTrackImageUri;
      late Image albumImage;
    
    
      static MusicPlayerState? maybeOf(BuildContext context) =>
          context.dependOnInheritedWidgetOfExactType<MusicPlayerState>();
    
      static MusicPlayerState of(BuildContext context) {
        final MusicPlayerState? result = maybeOf(context);
        assert(result != null, 'No PlayerState found in context');
        return result!;
      }
    
      void setLoading(bool loading){
        this.loading = loading;
        rebuildStream.sink.add(null);
      }
    
      void updatePlayerState() async {
        playerState = await getPlayerState();
        currentTrackImageUri = playerState?.track?.imageUri;
        //rebuildStream.sink.add(null);
        playStatedStream.sink.add(null);
      }
    
      Future<void> disconnect() async {
        try {
          setLoading(true);
          var result = await SpotifySdk.disconnect();
          setStatus(result ? 'disconnect successful' : 'disconnect failed');
          setLoading(false);
        } on PlatformException catch (e) {
          setLoading(false);
          setStatus(e.code, message: e.message);
        } on MissingPluginException {
          setLoading(false);
          setStatus('not implemented');
        }
      }
    
      Future<bool> connectToSpotifyRemote() async {
        try {
          setLoading(true);
          var result = await SpotifySdk.connectToSpotifyRemote(
              clientId: dotenv.env['CLIENT_ID'].toString(),
              redirectUrl: dotenv.env['REDIRECT_URL'].toString());
          setStatus(result
              ? 'connect to spotify successful'
              : 'connect to spotify failed');
          if(result){
            playerState = await getPlayerState();
            setLoading(false);