use DecoderBufferCallback instead of DecoderCallback in ImageProviders

This commit is contained in:
Wenqi Li 2023-05-07 20:03:01 +08:00
parent b9daf27c62
commit c79a684879
2 changed files with 9 additions and 10 deletions

View File

@ -11,7 +11,7 @@ class PhotoProvider extends ImageProvider<PhotoProvider> {
final String? mimeType; final String? mimeType;
@override @override
ImageStreamCompleter load(key, decode) { ImageStreamCompleter loadBuffer(key, decode) {
return MultiFrameImageStreamCompleter( return MultiFrameImageStreamCompleter(
codec: _loadAsync(key, decode), codec: _loadAsync(key, decode),
scale: 1.0, scale: 1.0,
@ -21,14 +21,13 @@ class PhotoProvider extends ImageProvider<PhotoProvider> {
); );
} }
Future<ui.Codec> _loadAsync(PhotoProvider key, DecoderCallback decode) async { Future<ui.Codec> _loadAsync(PhotoProvider key, DecoderBufferCallback decode) async {
assert(key == this); assert(key == this);
final file = await PhotoGallery.getFile( final file = await PhotoGallery.getFile(
mediumId: mediumId, mediumType: MediumType.image, mimeType: mimeType); mediumId: mediumId, mediumType: MediumType.image, mimeType: mimeType);
final bytes = await file.readAsBytes(); final bytes = await file.readAsBytes();
ui.ImmutableBuffer buffer = await ui.ImmutableBuffer.fromUint8List(bytes);
return await decode(bytes); return decode(buffer);
} }
@override @override

View File

@ -17,7 +17,7 @@ class ThumbnailProvider extends ImageProvider<ThumbnailProvider> {
final bool? highQuality; final bool? highQuality;
@override @override
ImageStreamCompleter load(key, decode) { ImageStreamCompleter loadBuffer(key, decode) {
return MultiFrameImageStreamCompleter( return MultiFrameImageStreamCompleter(
codec: _loadAsync(key, decode), codec: _loadAsync(key, decode),
scale: 1.0, scale: 1.0,
@ -27,17 +27,17 @@ class ThumbnailProvider extends ImageProvider<ThumbnailProvider> {
); );
} }
Future<ui.Codec> _loadAsync( Future<ui.Codec> _loadAsync(ThumbnailProvider key, DecoderBufferCallback decode) async {
ThumbnailProvider key, DecoderCallback decode) async {
assert(key == this); assert(key == this);
final bytes = await PhotoGallery.getThumbnail( final data = await PhotoGallery.getThumbnail(
mediumId: mediumId, mediumId: mediumId,
mediumType: mediumType, mediumType: mediumType,
height: height, height: height,
width: width, width: width,
highQuality: highQuality, highQuality: highQuality,
); );
return await decode(Uint8List.fromList(bytes)); ui.ImmutableBuffer buffer = await ui.ImmutableBuffer.fromUint8List(Uint8List.fromList(data));
return decode(buffer);
} }
@override @override