Remove deprecated `ImageProvider` methods (#4725)
Have to keep `loadBuffer` since `loadImage` isn't available on 3.7.
Fixes https://github.com/flutter/flutter/issues/105336
diff --git a/packages/flutter_image/CHANGELOG.md b/packages/flutter_image/CHANGELOG.md
index c791bd1..f481972 100644
--- a/packages/flutter_image/CHANGELOG.md
+++ b/packages/flutter_image/CHANGELOG.md
@@ -1,6 +1,7 @@
-## NEXT
+## 4.1.7
* Updates minimum supported SDK version to Flutter 3.7/Dart 2.19.
+* 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 7931737..a1cd332 100644
--- a/packages/flutter_image/lib/network.dart
+++ b/packages/flutter_image/lib/network.dart
@@ -17,6 +17,10 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
+// Method signature for _loadWithRetry decode callbacks.
+typedef _SimpleDecoderCallback = Future<ui.Codec> 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,10 +99,13 @@
}
@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 loadBuffer(
+ NetworkImageWithRetry key,
+ // TODO(LongCatIsLooong): migrate to use new `loadImage` API.
+ // https://github.com/flutter/flutter/issues/132856
+ // ignore: deprecated_member_use
+ DecoderBufferCallback decode,
+ ) {
return OneFrameImageStreamCompleter(_loadWithRetry(key, decode),
informationCollector: () sync* {
yield ErrorDescription('Image provider: $this');
@@ -126,12 +133,7 @@
}
Future<ImageInfo> _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 {
+ NetworkImageWithRetry key, _SimpleDecoderCallback decode) async {
assert(key == this);
final Stopwatch stopwatch = Stopwatch()..start();
@@ -181,7 +183,8 @@
);
}
- 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/pubspec.yaml b/packages/flutter_image/pubspec.yaml
index e9a9072..03192b0 100644
--- a/packages/flutter_image/pubspec.yaml
+++ b/packages/flutter_image/pubspec.yaml
@@ -3,7 +3,7 @@
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 6711fb2..6270e53 100644
--- a/packages/flutter_image/test/network_test.dart
+++ b/packages/flutter_image/test/network_test.dart
@@ -140,12 +140,12 @@
NetworkImageWithRetry subject,
List<FlutterErrorDetails> errorLog,
) {
- final ImageStreamCompleter completer = subject.load(
+ 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.instantiateImageCodec,
+ PaintingBinding.instance.instantiateImageCodecFromBuffer,
);
completer.addListener(ImageStreamListener(
(ImageInfo image, bool synchronousCall) {},
@@ -160,12 +160,12 @@
void assertThatImageLoadingSucceeds(
NetworkImageWithRetry subject,
) {
- final ImageStreamCompleter completer = subject.load(
+ 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.instantiateImageCodec,
+ PaintingBinding.instance.instantiateImageCodecFromBuffer,
);
completer.addListener(ImageStreamListener(
expectAsync2((ImageInfo image, bool synchronousCall) {