import 'dart:async' show Future, StreamController; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:venera/network/images.dart'; import 'base_image_provider.dart'; import 'cached_image.dart' as image_provider; class CachedImageProvider extends BaseImageProvider { /// Image provider for normal image. const CachedImageProvider(this.url, {this.headers, this.sourceKey}); final String url; final Map? headers; final String? sourceKey; @override Future load(StreamController chunkEvents) async { await for (var progress in ImageDownloader.loadThumbnail(url, sourceKey)) { chunkEvents.add(ImageChunkEvent( cumulativeBytesLoaded: progress.currentBytes, expectedTotalBytes: progress.totalBytes, )); if(progress.imageBytes != null) { return progress.imageBytes!; } } throw "Error: Empty response body."; } @override Future obtainKey(ImageConfiguration configuration) { return SynchronousFuture(this); } @override String get key => url; }