diff --git a/musicus/lib/screens/program.dart b/musicus/lib/screens/program.dart index 13d929c..bbf4d90 100644 --- a/musicus/lib/screens/program.dart +++ b/musicus/lib/screens/program.dart @@ -100,6 +100,8 @@ class ProgramScreen extends StatefulWidget { class _ProgramScreenState extends State { BackendState backend; + StreamSubscription playerActiveSubscription; + StreamSubscription> playlistSubscription; List items = []; @@ -113,6 +115,17 @@ class _ProgramScreenState extends State { backend = Backend.of(context); + if (playerActiveSubscription != null) { + playerActiveSubscription.cancel(); + } + + // Close the program screen, if the player is no longer active. + playerActiveSubscription = backend.player.active.listen((active) { + if (!active) { + Navigator.pop(context); + } + }); + if (playlistSubscription != null) { playlistSubscription.cancel(); } @@ -337,6 +350,7 @@ class _ProgramScreenState extends State { @override void dispose() { super.dispose(); + playerActiveSubscription.cancel(); playlistSubscription.cancel(); positionSubscription.cancel(); }