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) {