feat(mobile): platform image providers (#20927)

* platform image providers

* use key

* fix cache manager

* more logs, cancel on dispose instead

* split into separate files

* fix saving to cache

* cancel multi-stage provider

* refactored `getInitialImage`

* only wait for disposal for full images

* cached image works

* formatting

* lower asset viewer ram usage

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
This commit is contained in:
Mert 2025-08-20 15:36:44 -04:00 committed by GitHub
parent 9ff37b6870
commit 99d6673503
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 669 additions and 306 deletions

View file

@ -0,0 +1,25 @@
part of 'image_request.dart';
class ThumbhashImageRequest extends ImageRequest {
final String thumbhash;
ThumbhashImageRequest({required this.thumbhash});
@override
Future<ImageInfo?> load(ImageDecoderCallback decode, {double scale = 1.0}) async {
if (_isCancelled) {
return null;
}
final Map<String, int> info = await thumbnailApi.getThumbhash(thumbhash);
final frame = await _fromPlatformImage(info);
return frame == null ? null : ImageInfo(image: frame.image, scale: scale);
}
@override
void _onCancelled() {
if (!kReleaseMode) {
debugPrint('Thumbhash request $requestId for $thumbhash was cancelled');
}
}
}