Vovan 1 mēnesi atpakaļ
vecāks
revīzija
0ad0282354
2 mainītis faili ar 23 papildinājumiem un 7 dzēšanām
  1. 7 2
      lib/src/CashedNetworkImageWidget.dart
  2. 16 5
      lib/src/http_request.dart

+ 7 - 2
lib/src/CashedNetworkImageWidget.dart

@@ -100,7 +100,7 @@ class CachedNetworkImageProvider
   final bool cached;
   final String? cacheKey;
   final Widget? loadwidget;
-
+  final Map<String, String>? httpHeaders;
   const CachedNetworkImageProvider({
     required this.imageUrl,
     required this.cacheKey,
@@ -112,6 +112,7 @@ class CachedNetworkImageProvider
     this.placeholder,
     this.cached = true,
     this.loadwidget = const CircularProgressIndicator(),
+    this.httpHeaders,
   });
 
   @override
@@ -139,7 +140,11 @@ class CachedNetworkImageProvider
   Future<ui.Codec> _loadAndDecodeImage(ImageDecoderCallback decode) async {
     try {
       // 1. Отправляем HTTP‑запрос
-      HttpGetImage httpGetImage = HttpGetImage(url: imageUrl, count: count);
+      HttpGetImage httpGetImage = HttpGetImage(
+        url: imageUrl,
+        count: count,
+        httpHeaders: httpHeaders,
+      );
       // 2. Декодируем байты в ui.Image
 
       Uint8List img = await httpGetImage.getDataObjectIsolate();

+ 16 - 5
lib/src/http_request.dart

@@ -6,15 +6,26 @@ class HttpGetImage {
   final String url;
   final int count;
   final Map<String, String>? httpHeaders;
-  HttpGetImage({required this.url, required this.count, this.httpHeaders});
+  HttpGetImage({
+    required this.url,
+    required this.count,
+    required this.httpHeaders,
+  });
 
   Future<Uint8List> getDataObjectIsolate() async {
     final ReceivePort receivePort = ReceivePort();
 
-    final Isolate isolate = await Isolate.spawn(_isolateFetchVideo, {
-      'sendPort': receivePort.sendPort,
-      'url': url,
-    });
+    var data = {'sendPort': receivePort.sendPort, 'url': url};
+
+    if (httpHeaders != null) {
+      data = {
+        'sendPort': receivePort.sendPort,
+        'url': url,
+        'headers': httpHeaders!,
+      };
+    }
+
+    final Isolate isolate = await Isolate.spawn(_isolateFetchVideo, data);
 
     try {
       final dynamic result = await receivePort.first;