Skip to content

Commit 2ab9c86

Browse files
committed
Add loadImage and deprecate loadBuffer
1 parent 152234e commit 2ab9c86

File tree

16 files changed

+167
-25
lines changed

16 files changed

+167
-25
lines changed

cached_network_image/CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
* Support Dart 3.0.0 for http ^1.0.0 and file ^7.0.0
33
* Add topics
44
* Specify types
5-
* Add ErrorListener
5+
* Add error to ErrorListener
66
* Update example
7+
* Use `loadImage` instead `loadBuffer` and `load`
78

89
## [3.2.3] - 2022-11-25
910
* Correctly dispose image stream handler

cached_network_image/example/linux/flutter/generated_plugin_registrant.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66

77
#include "generated_plugin_registrant.h"
88

9+
#include <url_launcher_linux/url_launcher_plugin.h>
910

1011
void fl_register_plugins(FlPluginRegistry* registry) {
12+
g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
13+
fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
14+
url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
1115
}

cached_network_image/example/linux/flutter/generated_plugins.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#
44

55
list(APPEND FLUTTER_PLUGIN_LIST
6+
url_launcher_linux
67
)
78

89
list(APPEND FLUTTER_FFI_PLUGIN_LIST

cached_network_image/example/macos/Flutter/GeneratedPluginRegistrant.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
import FlutterMacOS
66
import Foundation
77

8+
import path_provider_foundation
9+
import sqflite
10+
import url_launcher_macos
811

912
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
13+
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
14+
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
15+
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
1016
}

cached_network_image/example/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ description: A project that showcases usage of cached_network_image
33
publish_to: none
44
version: 1.0.0+1
55
environment:
6-
sdk: '>=2.18.0 <4.0.0'
7-
flutter: '>=3.3.0'
6+
sdk: ^3.0.0
7+
flutter: '>=3.10.0'
88

99
dependencies:
1010
baseflow_plugin_template: ^2.1.2

cached_network_image/example/windows/flutter/generated_plugin_registrant.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66

77
#include "generated_plugin_registrant.h"
88

9+
#include <url_launcher_windows/url_launcher_windows.h>
910

1011
void RegisterPlugins(flutter::PluginRegistry* registry) {
12+
UrlLauncherWindowsRegisterWithRegistrar(
13+
registry->GetRegistrarForPlugin("UrlLauncherWindows"));
1114
}

cached_network_image/example/windows/flutter/generated_plugins.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#
44

55
list(APPEND FLUTTER_PLUGIN_LIST
6+
url_launcher_windows
67
)
78

89
list(APPEND FLUTTER_FFI_PLUGIN_LIST

cached_network_image/lib/src/image_provider/_image_loader.dart

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import 'package:flutter_cache_manager/flutter_cache_manager.dart';
1515

1616
/// ImageLoader class to load images on IO platforms.
1717
class ImageLoader implements platform.ImageLoader {
18-
@Deprecated('Use loadBufferAsync instead')
18+
@Deprecated('Use loadImageAsync instead')
1919
@override
2020
Stream<ui.Codec> loadAsync(
2121
String url,
@@ -45,6 +45,7 @@ class ImageLoader implements platform.ImageLoader {
4545
);
4646
}
4747

48+
@Deprecated('Use loadImageAsync instead')
4849
@override
4950
Stream<ui.Codec> loadBufferAsync(
5051
String url,
@@ -77,6 +78,38 @@ class ImageLoader implements platform.ImageLoader {
7778
);
7879
}
7980

81+
@override
82+
Stream<ui.Codec> loadImageAsync(
83+
String url,
84+
String? cacheKey,
85+
StreamController<ImageChunkEvent> chunkEvents,
86+
ImageDecoderCallback decode,
87+
BaseCacheManager cacheManager,
88+
int? maxHeight,
89+
int? maxWidth,
90+
Map<String, String>? headers,
91+
ValueChanged<Object>? errorListener,
92+
ImageRenderMethodForWeb imageRenderMethodForWeb,
93+
VoidCallback evictImage,
94+
) {
95+
return _load(
96+
url,
97+
cacheKey,
98+
chunkEvents,
99+
(bytes) async {
100+
final buffer = await ImmutableBuffer.fromUint8List(bytes);
101+
return decode(buffer);
102+
},
103+
cacheManager,
104+
maxHeight,
105+
maxWidth,
106+
headers,
107+
errorListener,
108+
imageRenderMethodForWeb,
109+
evictImage,
110+
);
111+
}
112+
80113
Stream<ui.Codec> _load(
81114
String url,
82115
String? cacheKey,

cached_network_image/lib/src/image_provider/cached_network_image_provider.dart

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,7 @@ class CachedNetworkImageProvider
6767
return SynchronousFuture<CachedNetworkImageProvider>(this);
6868
}
6969

70-
@Deprecated(
71-
'load is deprecated, use loadBuffer instead, '
72-
'see https://docs.flutter.dev/release/breaking-changes/image-provider-load-buffer',
73-
)
70+
@Deprecated('load is deprecated, use loadImage instead')
7471
@override
7572
ImageStreamCompleter load(
7673
CachedNetworkImageProvider key,
@@ -91,10 +88,7 @@ class CachedNetworkImageProvider
9188
);
9289
}
9390

94-
@Deprecated(
95-
'_loadAsync is deprecated, use _loadBufferAsync instead, '
96-
'see https://docs.flutter.dev/release/breaking-changes/image-provider-load-buffer',
97-
)
91+
@Deprecated('_loadAsync is deprecated, use _loadImageAsync instead')
9892
Stream<ui.Codec> _loadAsync(
9993
CachedNetworkImageProvider key,
10094
StreamController<ImageChunkEvent> chunkEvents,
@@ -116,6 +110,7 @@ class CachedNetworkImageProvider
116110
);
117111
}
118112

113+
@Deprecated('loadBuffer is deprecated, use loadImage instead')
119114
@override
120115
ImageStreamCompleter loadBuffer(
121116
CachedNetworkImageProvider key,
@@ -136,6 +131,7 @@ class CachedNetworkImageProvider
136131
);
137132
}
138133

134+
@Deprecated('_loadBufferAsync is deprecated, use _loadImageAsync instead')
139135
Stream<ui.Codec> _loadBufferAsync(
140136
CachedNetworkImageProvider key,
141137
StreamController<ImageChunkEvent> chunkEvents,
@@ -157,6 +153,47 @@ class CachedNetworkImageProvider
157153
);
158154
}
159155

156+
@override
157+
ImageStreamCompleter loadImage(
158+
CachedNetworkImageProvider key,
159+
ImageDecoderCallback decode,
160+
) {
161+
final chunkEvents = StreamController<ImageChunkEvent>();
162+
return MultiImageStreamCompleter(
163+
codec: _loadImageAsync(key, chunkEvents, decode),
164+
chunkEvents: chunkEvents.stream,
165+
scale: key.scale,
166+
informationCollector: () sync* {
167+
yield DiagnosticsProperty<ImageProvider>(
168+
'Image provider: $this \n Image key: $key',
169+
this,
170+
style: DiagnosticsTreeStyle.errorProperty,
171+
);
172+
},
173+
);
174+
}
175+
176+
Stream<ui.Codec> _loadImageAsync(
177+
CachedNetworkImageProvider key,
178+
StreamController<ImageChunkEvent> chunkEvents,
179+
ImageDecoderCallback decode,
180+
) {
181+
assert(key == this);
182+
return ImageLoader().loadImageAsync(
183+
url,
184+
cacheKey,
185+
chunkEvents,
186+
decode,
187+
cacheManager ?? DefaultCacheManager(),
188+
maxHeight,
189+
maxWidth,
190+
headers,
191+
errorListener,
192+
imageRenderMethodForWeb,
193+
() => PaintingBinding.instance.imageCache.evict(key),
194+
);
195+
}
196+
160197
@override
161198
bool operator ==(Object other) {
162199
if (other is CachedNetworkImageProvider) {

cached_network_image/pubspec.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ topics:
88
- network-image
99
version: 3.2.4
1010
environment:
11-
sdk: '>=2.18.0 <4.0.0'
12-
flutter: '>=3.3.0'
11+
sdk: ^3.0.0
12+
flutter: '>=3.10.0'
1313

1414
dependencies:
15-
cached_network_image_platform_interface: ^2.0.1
16-
cached_network_image_web: ^1.0.3
15+
cached_network_image_platform_interface:
16+
cached_network_image_web:
1717
flutter:
1818
sdk: flutter
1919
flutter_cache_manager: ^3.3.1

0 commit comments

Comments
 (0)