From dd71a53f5ed9b079ea94eb31156f484bd94aa0e4 Mon Sep 17 00:00:00 2001 From: Matthias Rupp Date: Fri, 30 Sep 2022 10:47:31 +0200 Subject: [PATCH] Hide scroll handle for lists < 100 assets --- .../ui/asset_list_v2/immich_asset_grid.dart | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/mobile/lib/modules/home/ui/asset_list_v2/immich_asset_grid.dart b/mobile/lib/modules/home/ui/asset_list_v2/immich_asset_grid.dart index 2916e5f423..d45c7d73c0 100644 --- a/mobile/lib/modules/home/ui/asset_list_v2/immich_asset_grid.dart +++ b/mobile/lib/modules/home/ui/asset_list_v2/immich_asset_grid.dart @@ -136,10 +136,13 @@ class ImmichAssetGrid extends HookConsumerWidget { ); } + @override Widget build(BuildContext context, WidgetRef ref) { final scrolling = useState(false); + final useDragScrolling = _assets.length > 100; + void dragScrolling(bool active) { scrolling.value = active; } @@ -148,6 +151,17 @@ class ImmichAssetGrid extends HookConsumerWidget { return _itemBuilder(c, position, scrolling.value); } + final listWidget = ScrollablePositionedList.builder( + itemBuilder: itemBuilder, + itemPositionsListener: _itemPositionsListener, + itemScrollController: _itemScrollController, + itemCount: renderList.length, + ); + + if (!useDragScrolling) { + return listWidget; + } + return DraggableScrollbar.semicircle( scrollStateListener: dragScrolling, itemPositionsListener: _itemPositionsListener, @@ -157,11 +171,7 @@ class ImmichAssetGrid extends HookConsumerWidget { labelConstraints: const BoxConstraints(maxHeight: 28), scrollbarAnimationDuration: const Duration(seconds: 1), scrollbarTimeToFade: const Duration(seconds: 4), - child: ScrollablePositionedList.builder( - itemBuilder: itemBuilder, - itemPositionsListener: _itemPositionsListener, - itemScrollController: _itemScrollController, - itemCount: renderList.length, - )); + child: listWidget, + ); } }