Select Git revision
vle_specific.php
-
Elke Kreim authored
This reverts commit 7859fcae.
Elke Kreim authoredThis reverts commit 7859fcae.
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);