From 9dbb8171a6d6b81120ca7ccd74577e5c890ff930 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Fri, 28 Apr 2023 13:06:36 +0600 Subject: [PATCH] feat: make snackbar floating --- lib/provider/playlist_queue_provider.dart | 26 +++++++++++++---------- lib/themes/theme.dart | 6 ++++++ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/lib/provider/playlist_queue_provider.dart b/lib/provider/playlist_queue_provider.dart index 75b00d89..f68933d1 100644 --- a/lib/provider/playlist_queue_provider.dart +++ b/lib/provider/playlist_queue_provider.dart @@ -535,18 +535,20 @@ class PlaylistQueueNotifier extends PersistedStateNotifier { state = state!.copyWith(tracks: Set.from(tracks), active: active); } - Future updatePalette() async { - final palette = await PaletteGenerator.fromImageProvider( - UniversalImage.imageProvider( - TypeConversionUtils.image_X_UrlString( - state?.activeTrack.album?.images, - placeholder: ImagePlaceholder.albumArt, + Future updatePalette() { + return Future.microtask(() async { + final palette = await PaletteGenerator.fromImageProvider( + UniversalImage.imageProvider( + TypeConversionUtils.image_X_UrlString( + state?.activeTrack.album?.images, + placeholder: ImagePlaceholder.albumArt, + ), + height: 50, + width: 50, ), - height: 50, - width: 50, - ), - ); - ref.read(paletteProvider.notifier).state = palette; + ); + ref.read(paletteProvider.notifier).state = palette; + }); } @override @@ -555,6 +557,8 @@ class PlaylistQueueNotifier extends PersistedStateNotifier { state != null && state.active != this.state?.active) { updatePalette(); + } else if (state == null && ref.read(paletteProvider) != null) { + ref.read(paletteProvider.notifier).state = null; } super.state = state; } diff --git a/lib/themes/theme.dart b/lib/themes/theme.dart index e56a6f50..b513ca7e 100644 --- a/lib/themes/theme.dart +++ b/lib/themes/theme.dart @@ -41,5 +41,11 @@ ThemeData theme(Color seed, Brightness brightness) { color: scheme.surface, elevation: 4, ), + snackBarTheme: SnackBarThemeData( + behavior: SnackBarBehavior.floating, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)), + backgroundColor: scheme.onSurface, + contentTextStyle: TextStyle(color: scheme.surface), + ), ); }