From f1b1f90fb66a7d7f4a88ba2d6db70d4712bddf2e Mon Sep 17 00:00:00 2001 From: mertalev <101130780+mertalev@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:39:30 -0500 Subject: [PATCH] fix eviction race condition --- mobile/lib/presentation/widgets/images/image_provider.dart | 6 ++---- .../presentation/widgets/images/local_image_provider.dart | 5 ++--- .../presentation/widgets/images/remote_image_provider.dart | 6 ++---- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/mobile/lib/presentation/widgets/images/image_provider.dart b/mobile/lib/presentation/widgets/images/image_provider.dart index ad7d53af13..09b9719ddf 100644 --- a/mobile/lib/presentation/widgets/images/image_provider.dart +++ b/mobile/lib/presentation/widgets/images/image_provider.dart @@ -1,5 +1,3 @@ -import 'dart:async'; - import 'package:async/async.dart'; import 'package:flutter/widgets.dart'; import 'package:immich_mobile/domain/models/asset/base_asset.model.dart'; @@ -53,14 +51,14 @@ mixin CancellableImageProviderMixin on CancellableImageProvide Stream loadRequest(ImageRequest request, ImageDecoderCallback decode) async* { if (isCancelled) { this.request = null; - unawaited(evict()); + PaintingBinding.instance.imageCache.evict(this); return; } try { final image = await request.load(decode); if (image == null || isCancelled) { - unawaited(evict()); + PaintingBinding.instance.imageCache.evict(this); return; } yield image; diff --git a/mobile/lib/presentation/widgets/images/local_image_provider.dart b/mobile/lib/presentation/widgets/images/local_image_provider.dart index c5dca57f9c..d7454c0c89 100644 --- a/mobile/lib/presentation/widgets/images/local_image_provider.dart +++ b/mobile/lib/presentation/widgets/images/local_image_provider.dart @@ -1,4 +1,3 @@ -import 'dart:async'; import 'dart:ui'; import 'package:flutter/foundation.dart'; @@ -85,7 +84,7 @@ class LocalFullImageProvider extends CancellableImageProvider