Skip to content

Commit 72d505a

Browse files
committed
update image load
1 parent 246ff30 commit 72d505a

File tree

1 file changed

+37
-1
lines changed

1 file changed

+37
-1
lines changed

lib/widget/network_cache_image.dart

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import 'package:flutter/foundation.dart';
66
import 'package:flutter/material.dart';
77
import 'dart:ui' as ui show Codec;
88

9+
import 'package:flutter/painting.dart' as image_provider;
10+
911
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
1012

1113
/**
@@ -58,6 +60,40 @@ class NetworkCacheImage extends ImageProvider<NetworkCacheImage> {
5860
static final HttpClient _httpClient = HttpClient();
5961

6062
Future<ui.Codec> _loadAsync(
63+
NetworkCacheImage key,
64+
StreamController<ImageChunkEvent> chunkEvents,
65+
DecoderCallback decode,
66+
) async {
67+
try {
68+
assert(key == this);
69+
70+
final Uri resolved = Uri.base.resolve(key.url);
71+
final HttpClientRequest request = await _httpClient.getUrl(resolved);
72+
headers?.forEach((String name, String value) {
73+
request.headers.add(name, value);
74+
});
75+
final HttpClientResponse response = await request.close();
76+
if (response.statusCode != HttpStatus.ok)
77+
throw image_provider.NetworkImageLoadException(statusCode: response.statusCode, uri: resolved);
78+
79+
final Uint8List bytes = await consolidateHttpClientResponseBytes(
80+
response,
81+
onBytesReceived: (int cumulative, int total) {
82+
chunkEvents.add(ImageChunkEvent(
83+
cumulativeBytesLoaded: cumulative,
84+
expectedTotalBytes: total,
85+
));
86+
},
87+
);
88+
if (bytes.lengthInBytes == 0)
89+
throw Exception('NetworkImage is an empty file: $resolved');
90+
return decode(bytes);
91+
} finally {
92+
chunkEvents.close();
93+
}
94+
}
95+
96+
/*Future<ui.Codec> _loadAsync(
6197
NetworkCacheImage key,
6298
StreamController<ImageChunkEvent> chunkEvents,
6399
DecoderCallback decode,
@@ -108,7 +144,7 @@ class NetworkCacheImage extends ImageProvider<NetworkCacheImage> {
108144
} finally {
109145
chunkEvents.close();
110146
}
111-
}
147+
}*/
112148

113149
@override
114150
bool operator ==(dynamic other) {

0 commit comments

Comments
 (0)