From 28b19220cb0e5f0abe990682f576ccbb682ddbb7 Mon Sep 17 00:00:00 2001 From: LeLunZ <31982496+LeLunZ@users.noreply.github.com> Date: Tue, 21 Apr 2026 22:55:02 +0200 Subject: [PATCH] fix(mobile): asset viewer stuck on spinner after rotation --- .../widgets/asset_viewer/asset_page.widget.dart | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/mobile/lib/presentation/widgets/asset_viewer/asset_page.widget.dart b/mobile/lib/presentation/widgets/asset_viewer/asset_page.widget.dart index 0934536471..5e19e2a5a6 100644 --- a/mobile/lib/presentation/widgets/asset_viewer/asset_page.widget.dart +++ b/mobile/lib/presentation/widgets/asset_viewer/asset_page.widget.dart @@ -56,10 +56,13 @@ class _AssetPageState extends ConsumerState { _DragIntent _dragIntent = _DragIntent.none; Drag? _drag; + BaseAsset? _asset; + @override void initState() { super.initState(); _eventSubscription = EventStream.shared.listen(_onEvent); + _asset = ref.read(timelineServiceProvider).getAssetSafe(widget.index); WidgetsBinding.instance.addPostFrameCallback((_) { if (!mounted || !_scrollController.hasClients) return; _scrollController.snapPosition.snapOffset = _snapOffset; @@ -69,6 +72,14 @@ class _AssetPageState extends ConsumerState { }); } + @override + void didUpdateWidget(AssetPage oldWidget) { + super.didUpdateWidget(oldWidget); + if (oldWidget.index != widget.index) { + _asset = ref.read(timelineServiceProvider).getAssetSafe(widget.index); + } + } + @override void dispose() { _scrollController.dispose(); @@ -357,7 +368,7 @@ class _AssetPageState extends ConsumerState { final stackIndex = ref.watch(assetViewerProvider.select((s) => s.stackIndex)); final isPlayingMotionVideo = ref.watch(isPlayingMotionVideoProvider); - final asset = ref.read(timelineServiceProvider).getAssetSafe(widget.index); + final asset = _asset; if (asset == null) { return const Center(child: ImmichLoadingIndicator()); }