From e56667be79dafb3e7816ccb34b57c968c6db2b1d Mon Sep 17 00:00:00 2001 From: Ming Ming Date: Sat, 15 Apr 2023 16:39:52 +0800 Subject: [PATCH] Fix missing visual feedback when changing sort for dynamic album --- app/lib/widget/collection_browser.dart | 48 ++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/app/lib/widget/collection_browser.dart b/app/lib/widget/collection_browser.dart index 3f73194b..48929709 100644 --- a/app/lib/widget/collection_browser.dart +++ b/app/lib/widget/collection_browser.dart @@ -231,13 +231,7 @@ class _WrappedCollectionBrowserState extends State<_WrappedCollectionBrowser> .contains(CollectionCapability.manualSort)) { return const _EditContentList(); } else { - return const SliverIgnorePointer( - ignoring: true, - sliver: SliverOpacity( - opacity: .25, - sliver: _ContentList(), - ), - ); + return const _UnmodifiableEditContentList(); } } }, @@ -423,3 +417,43 @@ class _EditContentList extends StatelessWidget { ); } } + +/// Unmodifiable content list under edit mode +class _UnmodifiableEditContentList extends StatelessWidget { + const _UnmodifiableEditContentList(); + + @override + Widget build(BuildContext context) { + return SliverIgnorePointer( + ignoring: true, + sliver: SliverOpacity( + opacity: .25, + sliver: StreamBuilder( + stream: context.read().albumBrowserZoomLevel, + initialData: + context.read().albumBrowserZoomLevel.value, + builder: (_, zoomLevel) { + if (zoomLevel.hasError) { + context.read<_Bloc>().add(_SetMessage( + L10n.global().writePreferenceFailureNotification)); + } + return _BlocBuilder( + buildWhen: (previous, current) => + previous.editTransformedItems != current.editTransformedItems, + builder: (context, state) { + return SelectableItemList<_Item>( + maxCrossAxisExtent: photo_list_util + .getThumbSize(zoomLevel.requireData) + .toDouble(), + items: state.editTransformedItems ?? state.transformedItems, + itemBuilder: (context, _, item) => item.buildWidget(context), + staggeredTileBuilder: (_, item) => item.staggeredTile, + ); + }, + ); + }, + ), + ), + ); + } +}