@@ -6,6 +6,8 @@ import 'package:flutter/foundation.dart';
66import 'package:flutter/material.dart' ;
77import 'dart:ui' as ui show Codec;
88
9+ import 'package:flutter/painting.dart' as image_provider;
10+
911import '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