From 9267f3b09a46acbfaf41f69443db95775e816962 Mon Sep 17 00:00:00 2001 From: LongCat is Looong <31859944+LongCatIsLooong@users.noreply.github.com> Date: Wed, 16 Aug 2023 12:15:13 -0700 Subject: [PATCH 1/7] Remove deprecated `ImageProvider` methods --- packages/flutter_image/lib/network.dart | 13 +++---------- packages/flutter_image/test/network_test.dart | 14 ++++---------- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/packages/flutter_image/lib/network.dart b/packages/flutter_image/lib/network.dart index 79317378e16..5eaed1ae411 100644 --- a/packages/flutter_image/lib/network.dart +++ b/packages/flutter_image/lib/network.dart @@ -95,10 +95,7 @@ class NetworkImageWithRetry extends ImageProvider { } @override - // TODO(cyanglaz): migrate to use the new APIs - // https://github.com/flutter/flutter/issues/105336 - // ignore: deprecated_member_use - ImageStreamCompleter load(NetworkImageWithRetry key, DecoderCallback decode) { + ImageStreamCompleter loadImage(NetworkImageWithRetry key, ImageDecoderCallback decode) { return OneFrameImageStreamCompleter(_loadWithRetry(key, decode), informationCollector: () sync* { yield ErrorDescription('Image provider: $this'); @@ -126,12 +123,8 @@ class NetworkImageWithRetry extends ImageProvider { } Future _loadWithRetry( - // TODO(cyanglaz): migrate to use the new APIs - // https://github.com/flutter/flutter/issues/105336 - // ignore: deprecated_member_use NetworkImageWithRetry key, - // ignore: deprecated_member_use - DecoderCallback decode) async { + ImageDecoderCallback decode) async { assert(key == this); final Stopwatch stopwatch = Stopwatch()..start(); @@ -181,7 +174,7 @@ class NetworkImageWithRetry extends ImageProvider { ); } - final ui.Codec codec = await decode(bytes); + final ui.Codec codec = await decode(await ui.ImmutableBuffer.fromUint8List(bytes)); final ui.Image image = (await codec.getNextFrame()).image; return ImageInfo( image: image, diff --git a/packages/flutter_image/test/network_test.dart b/packages/flutter_image/test/network_test.dart index 6711fb21800..6d2a99b0cd1 100644 --- a/packages/flutter_image/test/network_test.dart +++ b/packages/flutter_image/test/network_test.dart @@ -140,12 +140,9 @@ void assertThatImageLoadingFails( NetworkImageWithRetry subject, List errorLog, ) { - final ImageStreamCompleter completer = subject.load( + final ImageStreamCompleter completer = subject.loadImage( subject, - // TODO(cyanglaz): migrate to use the new APIs - // https://github.com/flutter/flutter/issues/105336 - // ignore: deprecated_member_use - PaintingBinding.instance.instantiateImageCodec, + PaintingBinding.instance.instantiateImageCodecWithSize, ); completer.addListener(ImageStreamListener( (ImageInfo image, bool synchronousCall) {}, @@ -160,12 +157,9 @@ void assertThatImageLoadingFails( void assertThatImageLoadingSucceeds( NetworkImageWithRetry subject, ) { - final ImageStreamCompleter completer = subject.load( + final ImageStreamCompleter completer = subject.loadImage( subject, - // TODO(cyanglaz): migrate to use the new APIs - // https://github.com/flutter/flutter/issues/105336 - // ignore: deprecated_member_use - PaintingBinding.instance.instantiateImageCodec, + PaintingBinding.instance.instantiateImageCodecWithSize, ); completer.addListener(ImageStreamListener( expectAsync2((ImageInfo image, bool synchronousCall) { From a0500a0b52474dadc6fdfeb4a858d99f97bf2620 Mon Sep 17 00:00:00 2001 From: LongCat is Looong <31859944+LongCatIsLooong@users.noreply.github.com> Date: Wed, 16 Aug 2023 13:20:28 -0700 Subject: [PATCH 2/7] bump version --- packages/flutter_image/CHANGELOG.md | 4 ++++ packages/flutter_image/lib/network.dart | 9 +++++---- packages/flutter_image/pubspec.yaml | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/flutter_image/CHANGELOG.md b/packages/flutter_image/CHANGELOG.md index 411b5921752..80a5f6fb04b 100644 --- a/packages/flutter_image/CHANGELOG.md +++ b/packages/flutter_image/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.1.7 + +* Migrates deprecated `ImageProvider.load` to `ImageProvider.loadImage`. + ## 4.1.6 * Fixes unawaited_futures violations. diff --git a/packages/flutter_image/lib/network.dart b/packages/flutter_image/lib/network.dart index 5eaed1ae411..6724a9228ec 100644 --- a/packages/flutter_image/lib/network.dart +++ b/packages/flutter_image/lib/network.dart @@ -95,7 +95,8 @@ class NetworkImageWithRetry extends ImageProvider { } @override - ImageStreamCompleter loadImage(NetworkImageWithRetry key, ImageDecoderCallback decode) { + ImageStreamCompleter loadImage( + NetworkImageWithRetry key, ImageDecoderCallback decode) { return OneFrameImageStreamCompleter(_loadWithRetry(key, decode), informationCollector: () sync* { yield ErrorDescription('Image provider: $this'); @@ -123,8 +124,7 @@ class NetworkImageWithRetry extends ImageProvider { } Future _loadWithRetry( - NetworkImageWithRetry key, - ImageDecoderCallback decode) async { + NetworkImageWithRetry key, ImageDecoderCallback decode) async { assert(key == this); final Stopwatch stopwatch = Stopwatch()..start(); @@ -174,7 +174,8 @@ class NetworkImageWithRetry extends ImageProvider { ); } - final ui.Codec codec = await decode(await ui.ImmutableBuffer.fromUint8List(bytes)); + final ui.Codec codec = + await decode(await ui.ImmutableBuffer.fromUint8List(bytes)); final ui.Image image = (await codec.getNextFrame()).image; return ImageInfo( image: image, diff --git a/packages/flutter_image/pubspec.yaml b/packages/flutter_image/pubspec.yaml index 09901618c7d..9388e97e8ce 100644 --- a/packages/flutter_image/pubspec.yaml +++ b/packages/flutter_image/pubspec.yaml @@ -3,7 +3,7 @@ description: > Image utilities for Flutter: improved network providers, effects, etc. repository: https://github.com/flutter/packages/tree/main/packages/flutter_image issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+flutter_image%22 -version: 4.1.6 +version: 4.1.7 environment: sdk: ">=2.18.0 <4.0.0" From 1193fc83b6bc924efe2c6e73ca0a70dea4ac48ad Mon Sep 17 00:00:00 2001 From: LongCat is Looong <31859944+LongCatIsLooong@users.noreply.github.com> Date: Wed, 16 Aug 2023 15:57:07 -0700 Subject: [PATCH 3/7] fix backward compatibility --- packages/flutter_image/CHANGELOG.md | 2 +- packages/flutter_image/lib/network.dart | 12 +++++++++--- packages/flutter_image/test/network_test.dart | 14 ++++++++++---- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/packages/flutter_image/CHANGELOG.md b/packages/flutter_image/CHANGELOG.md index 80a5f6fb04b..a3e9473e97f 100644 --- a/packages/flutter_image/CHANGELOG.md +++ b/packages/flutter_image/CHANGELOG.md @@ -1,6 +1,6 @@ ## 4.1.7 -* Migrates deprecated `ImageProvider.load` to `ImageProvider.loadImage`. +* Migrates deprecated `ImageProvider.load` to `ImageProvider.loadBuffer`. ## 4.1.6 diff --git a/packages/flutter_image/lib/network.dart b/packages/flutter_image/lib/network.dart index 6724a9228ec..6c3830f332f 100644 --- a/packages/flutter_image/lib/network.dart +++ b/packages/flutter_image/lib/network.dart @@ -17,6 +17,9 @@ import 'dart:ui' as ui; import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; +// Method signature for _loadWithRetry decode callbacks. +typedef _SimpleDecoderCallback = Future Function(ui.ImmutableBuffer buffer); + /// Fetches the image from the given URL, associating it with the given scale. /// /// If [fetchStrategy] is specified, uses it instead of the @@ -95,8 +98,11 @@ class NetworkImageWithRetry extends ImageProvider { } @override - ImageStreamCompleter loadImage( - NetworkImageWithRetry key, ImageDecoderCallback decode) { + ImageStreamCompleter loadBuffer( + // TODO(cyanglaz): migrate to use the new APIs + // https://github.com/flutter/flutter/issues/105336 + // ignore: deprecated_member_use + NetworkImageWithRetry key, DecoderBufferCallback decode) { return OneFrameImageStreamCompleter(_loadWithRetry(key, decode), informationCollector: () sync* { yield ErrorDescription('Image provider: $this'); @@ -124,7 +130,7 @@ class NetworkImageWithRetry extends ImageProvider { } Future _loadWithRetry( - NetworkImageWithRetry key, ImageDecoderCallback decode) async { + NetworkImageWithRetry key, _SimpleDecoderCallback decode) async { assert(key == this); final Stopwatch stopwatch = Stopwatch()..start(); diff --git a/packages/flutter_image/test/network_test.dart b/packages/flutter_image/test/network_test.dart index 6d2a99b0cd1..9cfe84811ca 100644 --- a/packages/flutter_image/test/network_test.dart +++ b/packages/flutter_image/test/network_test.dart @@ -140,9 +140,12 @@ void assertThatImageLoadingFails( NetworkImageWithRetry subject, List errorLog, ) { - final ImageStreamCompleter completer = subject.loadImage( + final ImageStreamCompleter completer = subject.loadBuffer( subject, - PaintingBinding.instance.instantiateImageCodecWithSize, + // TODO(cyanglaz): migrate to use the new APIs + // https://github.com/flutter/flutter/issues/105336 + // ignore: deprecated_member_use + PaintingBinding.instance.instantiateImageCodecFromBuffer, ); completer.addListener(ImageStreamListener( (ImageInfo image, bool synchronousCall) {}, @@ -157,9 +160,12 @@ void assertThatImageLoadingFails( void assertThatImageLoadingSucceeds( NetworkImageWithRetry subject, ) { - final ImageStreamCompleter completer = subject.loadImage( + final ImageStreamCompleter completer = subject.loadBuffer( subject, - PaintingBinding.instance.instantiateImageCodecWithSize, + // TODO(cyanglaz): migrate to use the new APIs + // https://github.com/flutter/flutter/issues/105336 + // ignore: deprecated_member_use + PaintingBinding.instance.instantiateImageCodecFromBuffer, ); completer.addListener(ImageStreamListener( expectAsync2((ImageInfo image, bool synchronousCall) { From 0bdaf23f8ade3f5f2b5f2979e5a82fb14db008ff Mon Sep 17 00:00:00 2001 From: LongCat is Looong <31859944+LongCatIsLooong@users.noreply.github.com> Date: Wed, 16 Aug 2023 16:08:54 -0700 Subject: [PATCH 4/7] format --- packages/flutter_image/lib/network.dart | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/flutter_image/lib/network.dart b/packages/flutter_image/lib/network.dart index 6c3830f332f..a7730bf9e38 100644 --- a/packages/flutter_image/lib/network.dart +++ b/packages/flutter_image/lib/network.dart @@ -18,7 +18,8 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; // Method signature for _loadWithRetry decode callbacks. -typedef _SimpleDecoderCallback = Future Function(ui.ImmutableBuffer buffer); +typedef _SimpleDecoderCallback = Future Function( + ui.ImmutableBuffer buffer); /// Fetches the image from the given URL, associating it with the given scale. /// @@ -99,10 +100,12 @@ class NetworkImageWithRetry extends ImageProvider { @override ImageStreamCompleter loadBuffer( - // TODO(cyanglaz): migrate to use the new APIs - // https://github.com/flutter/flutter/issues/105336 - // ignore: deprecated_member_use - NetworkImageWithRetry key, DecoderBufferCallback decode) { + NetworkImageWithRetry key, + // TODO(cyanglaz): migrate to use the new APIs + // https://github.com/flutter/flutter/issues/105336 + // ignore: deprecated_member_use + DecoderBufferCallback decode, + ) { return OneFrameImageStreamCompleter(_loadWithRetry(key, decode), informationCollector: () sync* { yield ErrorDescription('Image provider: $this'); From 76660322565de7bae34d151260e3d079d6e5bae4 Mon Sep 17 00:00:00 2001 From: LongCat is Looong <31859944+LongCatIsLooong@users.noreply.github.com> Date: Thu, 17 Aug 2023 17:29:24 -0700 Subject: [PATCH 5/7] Migrate `ImageProvider.load` to `ImageProvider.loadImage` --- packages/flutter_image/lib/network.dart | 13 +++---------- packages/flutter_image/test/network_test.dart | 14 ++++---------- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/packages/flutter_image/lib/network.dart b/packages/flutter_image/lib/network.dart index a7730bf9e38..360fca13313 100644 --- a/packages/flutter_image/lib/network.dart +++ b/packages/flutter_image/lib/network.dart @@ -17,10 +17,6 @@ import 'dart:ui' as ui; import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; -// Method signature for _loadWithRetry decode callbacks. -typedef _SimpleDecoderCallback = Future Function( - ui.ImmutableBuffer buffer); - /// Fetches the image from the given URL, associating it with the given scale. /// /// If [fetchStrategy] is specified, uses it instead of the @@ -99,12 +95,9 @@ class NetworkImageWithRetry extends ImageProvider { } @override - ImageStreamCompleter loadBuffer( + ImageStreamCompleter loadImage( NetworkImageWithRetry key, - // TODO(cyanglaz): migrate to use the new APIs - // https://github.com/flutter/flutter/issues/105336 - // ignore: deprecated_member_use - DecoderBufferCallback decode, + ImageDecoderCallback decode, ) { return OneFrameImageStreamCompleter(_loadWithRetry(key, decode), informationCollector: () sync* { @@ -133,7 +126,7 @@ class NetworkImageWithRetry extends ImageProvider { } Future _loadWithRetry( - NetworkImageWithRetry key, _SimpleDecoderCallback decode) async { + NetworkImageWithRetry key, ImageDecoderCallback decode) async { assert(key == this); final Stopwatch stopwatch = Stopwatch()..start(); diff --git a/packages/flutter_image/test/network_test.dart b/packages/flutter_image/test/network_test.dart index 9cfe84811ca..6d2a99b0cd1 100644 --- a/packages/flutter_image/test/network_test.dart +++ b/packages/flutter_image/test/network_test.dart @@ -140,12 +140,9 @@ void assertThatImageLoadingFails( NetworkImageWithRetry subject, List errorLog, ) { - final ImageStreamCompleter completer = subject.loadBuffer( + final ImageStreamCompleter completer = subject.loadImage( subject, - // TODO(cyanglaz): migrate to use the new APIs - // https://github.com/flutter/flutter/issues/105336 - // ignore: deprecated_member_use - PaintingBinding.instance.instantiateImageCodecFromBuffer, + PaintingBinding.instance.instantiateImageCodecWithSize, ); completer.addListener(ImageStreamListener( (ImageInfo image, bool synchronousCall) {}, @@ -160,12 +157,9 @@ void assertThatImageLoadingFails( void assertThatImageLoadingSucceeds( NetworkImageWithRetry subject, ) { - final ImageStreamCompleter completer = subject.loadBuffer( + final ImageStreamCompleter completer = subject.loadImage( subject, - // TODO(cyanglaz): migrate to use the new APIs - // https://github.com/flutter/flutter/issues/105336 - // ignore: deprecated_member_use - PaintingBinding.instance.instantiateImageCodecFromBuffer, + PaintingBinding.instance.instantiateImageCodecWithSize, ); completer.addListener(ImageStreamListener( expectAsync2((ImageInfo image, bool synchronousCall) { From 8492fd904098036e0bc4e5a05fdb6b08c2963c5f Mon Sep 17 00:00:00 2001 From: LongCat is Looong <31859944+LongCatIsLooong@users.noreply.github.com> Date: Thu, 17 Aug 2023 17:35:32 -0700 Subject: [PATCH 6/7] Revert "Migrate `ImageProvider.load` to `ImageProvider.loadImage`" --- packages/flutter_image/lib/network.dart | 13 ++++++++++--- packages/flutter_image/test/network_test.dart | 14 ++++++++++---- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/packages/flutter_image/lib/network.dart b/packages/flutter_image/lib/network.dart index 360fca13313..a7730bf9e38 100644 --- a/packages/flutter_image/lib/network.dart +++ b/packages/flutter_image/lib/network.dart @@ -17,6 +17,10 @@ import 'dart:ui' as ui; import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; +// Method signature for _loadWithRetry decode callbacks. +typedef _SimpleDecoderCallback = Future Function( + ui.ImmutableBuffer buffer); + /// Fetches the image from the given URL, associating it with the given scale. /// /// If [fetchStrategy] is specified, uses it instead of the @@ -95,9 +99,12 @@ class NetworkImageWithRetry extends ImageProvider { } @override - ImageStreamCompleter loadImage( + ImageStreamCompleter loadBuffer( NetworkImageWithRetry key, - ImageDecoderCallback decode, + // TODO(cyanglaz): migrate to use the new APIs + // https://github.com/flutter/flutter/issues/105336 + // ignore: deprecated_member_use + DecoderBufferCallback decode, ) { return OneFrameImageStreamCompleter(_loadWithRetry(key, decode), informationCollector: () sync* { @@ -126,7 +133,7 @@ class NetworkImageWithRetry extends ImageProvider { } Future _loadWithRetry( - NetworkImageWithRetry key, ImageDecoderCallback decode) async { + NetworkImageWithRetry key, _SimpleDecoderCallback decode) async { assert(key == this); final Stopwatch stopwatch = Stopwatch()..start(); diff --git a/packages/flutter_image/test/network_test.dart b/packages/flutter_image/test/network_test.dart index 6d2a99b0cd1..9cfe84811ca 100644 --- a/packages/flutter_image/test/network_test.dart +++ b/packages/flutter_image/test/network_test.dart @@ -140,9 +140,12 @@ void assertThatImageLoadingFails( NetworkImageWithRetry subject, List errorLog, ) { - final ImageStreamCompleter completer = subject.loadImage( + final ImageStreamCompleter completer = subject.loadBuffer( subject, - PaintingBinding.instance.instantiateImageCodecWithSize, + // TODO(cyanglaz): migrate to use the new APIs + // https://github.com/flutter/flutter/issues/105336 + // ignore: deprecated_member_use + PaintingBinding.instance.instantiateImageCodecFromBuffer, ); completer.addListener(ImageStreamListener( (ImageInfo image, bool synchronousCall) {}, @@ -157,9 +160,12 @@ void assertThatImageLoadingFails( void assertThatImageLoadingSucceeds( NetworkImageWithRetry subject, ) { - final ImageStreamCompleter completer = subject.loadImage( + final ImageStreamCompleter completer = subject.loadBuffer( subject, - PaintingBinding.instance.instantiateImageCodecWithSize, + // TODO(cyanglaz): migrate to use the new APIs + // https://github.com/flutter/flutter/issues/105336 + // ignore: deprecated_member_use + PaintingBinding.instance.instantiateImageCodecFromBuffer, ); completer.addListener(ImageStreamListener( expectAsync2((ImageInfo image, bool synchronousCall) { From 286157c9fc1e280c465b319fe1f2468aa2e4d017 Mon Sep 17 00:00:00 2001 From: LongCat is Looong <31859944+LongCatIsLooong@users.noreply.github.com> Date: Fri, 18 Aug 2023 10:34:45 -0700 Subject: [PATCH 7/7] bump version --- packages/flutter_image/CHANGELOG.md | 4 ++-- packages/flutter_image/lib/network.dart | 4 ++-- packages/flutter_image/pubspec.yaml | 2 +- packages/flutter_image/test/network_test.dart | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/flutter_image/CHANGELOG.md b/packages/flutter_image/CHANGELOG.md index 1beec0a7138..f4819722dda 100644 --- a/packages/flutter_image/CHANGELOG.md +++ b/packages/flutter_image/CHANGELOG.md @@ -1,7 +1,7 @@ -## NEXT +## 4.1.7 * Updates minimum supported SDK version to Flutter 3.7/Dart 2.19. -* Migrates deprecated `ImageProvider.load` to `ImageProvider.loadImage`. +* Migrates deprecated `ImageProvider.load` to `ImageProvider.loadBuffer`. ## 4.1.6 diff --git a/packages/flutter_image/lib/network.dart b/packages/flutter_image/lib/network.dart index a7730bf9e38..a1cd3326434 100644 --- a/packages/flutter_image/lib/network.dart +++ b/packages/flutter_image/lib/network.dart @@ -101,8 +101,8 @@ class NetworkImageWithRetry extends ImageProvider { @override ImageStreamCompleter loadBuffer( NetworkImageWithRetry key, - // TODO(cyanglaz): migrate to use the new APIs - // https://github.com/flutter/flutter/issues/105336 + // TODO(LongCatIsLooong): migrate to use new `loadImage` API. + // https://github.com/flutter/flutter/issues/132856 // ignore: deprecated_member_use DecoderBufferCallback decode, ) { diff --git a/packages/flutter_image/pubspec.yaml b/packages/flutter_image/pubspec.yaml index e9a907272ad..03192b04868 100644 --- a/packages/flutter_image/pubspec.yaml +++ b/packages/flutter_image/pubspec.yaml @@ -3,7 +3,7 @@ description: > Image utilities for Flutter: improved network providers, effects, etc. repository: https://github.com/flutter/packages/tree/main/packages/flutter_image issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+flutter_image%22 -version: 4.1.6 +version: 4.1.7 environment: sdk: ">=2.19.0 <4.0.0" diff --git a/packages/flutter_image/test/network_test.dart b/packages/flutter_image/test/network_test.dart index 9cfe84811ca..6270e533940 100644 --- a/packages/flutter_image/test/network_test.dart +++ b/packages/flutter_image/test/network_test.dart @@ -142,8 +142,8 @@ void assertThatImageLoadingFails( ) { final ImageStreamCompleter completer = subject.loadBuffer( subject, - // TODO(cyanglaz): migrate to use the new APIs - // https://github.com/flutter/flutter/issues/105336 + // TODO(LongCatIsLooong): migrate to use new `instantiateImageCodecWithSize` API. + // https://github.com/flutter/flutter/issues/132856 // ignore: deprecated_member_use PaintingBinding.instance.instantiateImageCodecFromBuffer, ); @@ -162,8 +162,8 @@ void assertThatImageLoadingSucceeds( ) { final ImageStreamCompleter completer = subject.loadBuffer( subject, - // TODO(cyanglaz): migrate to use the new APIs - // https://github.com/flutter/flutter/issues/105336 + // TODO(LongCatIsLooong): migrate to use new `instantiateImageCodecWithSize` API. + // https://github.com/flutter/flutter/issues/132856 // ignore: deprecated_member_use PaintingBinding.instance.instantiateImageCodecFromBuffer, );