Skip to content

Commit 354af05

Browse files
Remove deprecated ImageProvider methods (#4725)
Have to keep `loadBuffer` since `loadImage` isn't available on 3.7. Fixes flutter/flutter#105336
1 parent c730a90 commit 354af05

4 files changed

Lines changed: 25 additions & 21 deletions

File tree

packages/flutter_image/CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
## NEXT
1+
## 4.1.7
22

33
* Updates minimum supported SDK version to Flutter 3.7/Dart 2.19.
4+
* Migrates deprecated `ImageProvider.load` to `ImageProvider.loadBuffer`.
45

56
## 4.1.6
67

packages/flutter_image/lib/network.dart

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ import 'dart:ui' as ui;
1717
import 'package:flutter/foundation.dart';
1818
import 'package:flutter/widgets.dart';
1919

20+
// Method signature for _loadWithRetry decode callbacks.
21+
typedef _SimpleDecoderCallback = Future<ui.Codec> Function(
22+
ui.ImmutableBuffer buffer);
23+
2024
/// Fetches the image from the given URL, associating it with the given scale.
2125
///
2226
/// If [fetchStrategy] is specified, uses it instead of the
@@ -95,10 +99,13 @@ class NetworkImageWithRetry extends ImageProvider<NetworkImageWithRetry> {
9599
}
96100

97101
@override
98-
// TODO(cyanglaz): migrate to use the new APIs
99-
// https://github.com/flutter/flutter/issues/105336
100-
// ignore: deprecated_member_use
101-
ImageStreamCompleter load(NetworkImageWithRetry key, DecoderCallback decode) {
102+
ImageStreamCompleter loadBuffer(
103+
NetworkImageWithRetry key,
104+
// TODO(LongCatIsLooong): migrate to use new `loadImage` API.
105+
// https://github.com/flutter/flutter/issues/132856
106+
// ignore: deprecated_member_use
107+
DecoderBufferCallback decode,
108+
) {
102109
return OneFrameImageStreamCompleter(_loadWithRetry(key, decode),
103110
informationCollector: () sync* {
104111
yield ErrorDescription('Image provider: $this');
@@ -126,12 +133,7 @@ class NetworkImageWithRetry extends ImageProvider<NetworkImageWithRetry> {
126133
}
127134

128135
Future<ImageInfo> _loadWithRetry(
129-
// TODO(cyanglaz): migrate to use the new APIs
130-
// https://github.com/flutter/flutter/issues/105336
131-
// ignore: deprecated_member_use
132-
NetworkImageWithRetry key,
133-
// ignore: deprecated_member_use
134-
DecoderCallback decode) async {
136+
NetworkImageWithRetry key, _SimpleDecoderCallback decode) async {
135137
assert(key == this);
136138

137139
final Stopwatch stopwatch = Stopwatch()..start();
@@ -181,7 +183,8 @@ class NetworkImageWithRetry extends ImageProvider<NetworkImageWithRetry> {
181183
);
182184
}
183185

184-
final ui.Codec codec = await decode(bytes);
186+
final ui.Codec codec =
187+
await decode(await ui.ImmutableBuffer.fromUint8List(bytes));
185188
final ui.Image image = (await codec.getNextFrame()).image;
186189
return ImageInfo(
187190
image: image,

packages/flutter_image/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ description: >
33
Image utilities for Flutter: improved network providers, effects, etc.
44
repository: https://github.com/flutter/packages/tree/main/packages/flutter_image
55
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+flutter_image%22
6-
version: 4.1.6
6+
version: 4.1.7
77

88
environment:
99
sdk: ">=2.19.0 <4.0.0"

packages/flutter_image/test/network_test.dart

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,12 @@ void assertThatImageLoadingFails(
140140
NetworkImageWithRetry subject,
141141
List<FlutterErrorDetails> errorLog,
142142
) {
143-
final ImageStreamCompleter completer = subject.load(
143+
final ImageStreamCompleter completer = subject.loadBuffer(
144144
subject,
145-
// TODO(cyanglaz): migrate to use the new APIs
146-
// https://github.com/flutter/flutter/issues/105336
145+
// TODO(LongCatIsLooong): migrate to use new `instantiateImageCodecWithSize` API.
146+
// https://github.com/flutter/flutter/issues/132856
147147
// ignore: deprecated_member_use
148-
PaintingBinding.instance.instantiateImageCodec,
148+
PaintingBinding.instance.instantiateImageCodecFromBuffer,
149149
);
150150
completer.addListener(ImageStreamListener(
151151
(ImageInfo image, bool synchronousCall) {},
@@ -160,12 +160,12 @@ void assertThatImageLoadingFails(
160160
void assertThatImageLoadingSucceeds(
161161
NetworkImageWithRetry subject,
162162
) {
163-
final ImageStreamCompleter completer = subject.load(
163+
final ImageStreamCompleter completer = subject.loadBuffer(
164164
subject,
165-
// TODO(cyanglaz): migrate to use the new APIs
166-
// https://github.com/flutter/flutter/issues/105336
165+
// TODO(LongCatIsLooong): migrate to use new `instantiateImageCodecWithSize` API.
166+
// https://github.com/flutter/flutter/issues/132856
167167
// ignore: deprecated_member_use
168-
PaintingBinding.instance.instantiateImageCodec,
168+
PaintingBinding.instance.instantiateImageCodecFromBuffer,
169169
);
170170
completer.addListener(ImageStreamListener(
171171
expectAsync2((ImageInfo image, bool synchronousCall) {

0 commit comments

Comments
 (0)