Skip to content
Snippets Groups Projects
Select Git revision
  • 0a3f66e91dfce48d873c6cda19b717cca0c45da0
  • main default protected
  • music_player
  • WirMachenFirebaseMitRein
  • madlen
  • mergeHELL
  • ede
  • spotify-api
8 results

homepage.dart

Blame
  • homepage.dart 8.33 KiB
    import 'dart:async';
    
    import 'package:ambient/widgets/MusicPlayerState.dart';
    import 'package:flutter/material.dart';
    
    import 'package:flutter/services.dart';
    import 'package:spotify_sdk/models/connection_status.dart';
    import 'package:spotify_sdk/models/track.dart';
    import 'package:spotify_sdk/spotify_sdk.dart';
    import 'dart:developer' as developer;
    
    
    import 'main.dart';
    
    void printErr(String msg) {
      developer.log(msg);
    }
    
    class HomePage extends StatelessWidget {
      final pageController;
      const HomePage({super.key, this.pageController});
    
      @override
      Widget build(BuildContext context) {
        return StreamBuilder<ConnectionStatus>(
          stream: SpotifySdk.subscribeConnectionStatus(),
          builder: (context, snapshot) {
            var data = snapshot.data;
            if (data != null) {
              MusicPlayerState
                  .of(context)
                  .connected = data.connected;
            }
            return StreamBuilder<void>(
              stream: MusicPlayerState.of(context).rebuildStream.stream,
              builder: (context, _) => player(context),
            );
          },
        );
      }
    
      Widget player(BuildContext context) {
        return Stack(children: [
          Center(child: ListView(
            shrinkWrap: true,
            padding: const EdgeInsets.all(8),
            children: [
              MusicPlayerState.of(context).connected
                  ? _buildPlayerStateWidget(context)
                  : Center(
                child: MaterialButton(
                  minWidth: 200,
                  height: 200,
                  color: Colors.blue,
                  textColor: Colors.white,
                  shape: const CircleBorder(),
                  child: const Icon(
                    Icons.connected_tv,
                    size: 50,
                  ),
                  onPressed: () async {
                    await MusicPlayerState.of(context).connectToSpotifyRemote();
                    buildSnackbar(context);
                  },
                ),
              ),
              IconButton(
                icon: const Icon(Icons.info),
                iconSize: 50,
                color: primaryColor,