Skip to content
Snippets Groups Projects
Select Git revision
  • aefe805f5e07f066bbdca18816846de044989210
  • main default
  • hsh-MOODLE_404+
  • hsh_3.10
  • master protected
  • v1.4.7
  • v1.4.6
  • v1.4.5
  • v1.4.3
  • v1.4.1
  • v1.4
  • v1.3r2
  • v1.3
  • v1.2
14 results

version.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);