cashed_image_bloc.dart 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import 'package:bloc/bloc.dart';
  2. import 'package:equatable/equatable.dart';
  3. import 'package:flutter/foundation.dart';
  4. import 'package:flutter_cache_manager/flutter_cache_manager.dart';
  5. import 'package:network_image_cached/src/http_request.dart';
  6. part 'cashed_image_event.dart';
  7. part 'cashed_image_state.dart';
  8. class CashedImageBloc extends Bloc<CashedImageEvent, CashedImageState> {
  9. DefaultCacheManager defaultCacheManager = DefaultCacheManager();
  10. CashedImageBloc() : super(CashedImageInitial()) {
  11. on<GetStartImageEvent>((event, emit) async {
  12. emit(CashedImageLoadingState());
  13. HttpGetImage httpGetImage = HttpGetImage(
  14. url: event.url,
  15. count: event.count,
  16. httpHeaders: event.httpHeaders,
  17. );
  18. if (event.cached) {
  19. FileInfo? fileInfo;
  20. if (event.cachkey != null) {
  21. fileInfo = await defaultCacheManager.getFileFromCache(event.cachkey!);
  22. } else {
  23. fileInfo = await defaultCacheManager.getFileFromCache(event.url);
  24. }
  25. if (fileInfo != null) {
  26. emit(CashedImageGetState(bytes: await fileInfo.file.readAsBytes()));
  27. return;
  28. }
  29. }
  30. try {
  31. Uint8List uint8list = await httpGetImage.getDataObjectIsolate();
  32. if (event.cached) {
  33. if (event.cachkey != null) {
  34. defaultCacheManager.putFile(event.cachkey!, uint8list);
  35. } else {
  36. defaultCacheManager.putFile(event.url, uint8list);
  37. }
  38. }
  39. emit(CashedImageGetState(bytes: uint8list));
  40. } catch (e) {
  41. emit(CashedImageGetErrorState());
  42. }
  43. });
  44. }
  45. }