import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; import 'package:network_image_cached/src/http_request.dart'; part 'cashed_image_event.dart'; part 'cashed_image_state.dart'; class CashedImageBloc extends Bloc { DefaultCacheManager defaultCacheManager = DefaultCacheManager(); CashedImageBloc() : super(CashedImageInitial()) { on((event, emit) async { emit(CashedImageLoadingState()); HttpGetImage httpGetImage = HttpGetImage( url: event.url, count: event.count, httpHeaders: event.httpHeaders, ); if (event.cached) { FileInfo? fileInfo; if (event.cachkey != null) { fileInfo = await defaultCacheManager.getFileFromCache(event.cachkey!); } else { fileInfo = await defaultCacheManager.getFileFromCache(event.url); } if (fileInfo != null) { emit(CashedImageGetState(bytes: await fileInfo.file.readAsBytes())); return; } } try { Uint8List uint8list = await httpGetImage.getDataObjectIsolate(); if (event.cached) { if (event.cachkey != null) { defaultCacheManager.putFile(event.cachkey!, uint8list); } else { defaultCacheManager.putFile(event.url, uint8list); } } emit(CashedImageGetState(bytes: uint8list)); } catch (e) { emit(CashedImageGetErrorState()); } }); } }