From d6307b262f1be23d677d4a4e87bd3a00560fcd46 Mon Sep 17 00:00:00 2001 From: Noel S Date: Mon, 10 Nov 2025 10:13:04 -0800 Subject: [PATCH] fix(mobile): Hide download button in asset viewer "immersive mode" (#23720) * Hide download FAB in asset viewer immersive mode * Remove commented out code * Remove more comments --- .../widgets/asset_viewer/asset_viewer.page.dart | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mobile/lib/presentation/widgets/asset_viewer/asset_viewer.page.dart b/mobile/lib/presentation/widgets/asset_viewer/asset_viewer.page.dart index f8a2c37ccd..50c4347301 100644 --- a/mobile/lib/presentation/widgets/asset_viewer/asset_viewer.page.dart +++ b/mobile/lib/presentation/widgets/asset_viewer/asset_viewer.page.dart @@ -627,10 +627,10 @@ class _AssetViewerState extends ConsumerState { // Rebuild the widget when the asset viewer state changes // Using multiple selectors to avoid unnecessary rebuilds for other state changes ref.watch(assetViewerProvider.select((s) => s.showingBottomSheet)); - ref.watch(assetViewerProvider.select((s) => s.showingControls)); ref.watch(assetViewerProvider.select((s) => s.backgroundOpacity)); ref.watch(assetViewerProvider.select((s) => s.stackIndex)); ref.watch(isPlayingMotionVideoProvider); + final showingControls = ref.watch(assetViewerProvider.select((s) => s.showingControls)); // Listen for casting changes and send initial asset to the cast provider ref.listen(castProvider.select((value) => value.isCasting), (_, isCasting) async { @@ -663,7 +663,14 @@ class _AssetViewerState extends ConsumerState { appBar: const ViewerTopAppBar(), extendBody: true, extendBodyBehindAppBar: true, - floatingActionButton: const DownloadStatusFloatingButton(), + floatingActionButton: IgnorePointer( + ignoring: !showingControls, + child: AnimatedOpacity( + opacity: showingControls ? 1.0 : 0.0, + duration: Durations.short2, + child: const DownloadStatusFloatingButton(), + ), + ), body: Stack( children: [ PhotoViewGallery.builder(