cashed_image_bloc.dart 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 = await defaultCacheManager.getFileFromCache(
  20. event.url,
  21. );
  22. if (fileInfo != null) {
  23. emit(CashedImageGetState(bytes: await fileInfo.file.readAsBytes()));
  24. return;
  25. }
  26. }
  27. try {
  28. Uint8List uint8list = await httpGetImage.getDataObjectIsolate();
  29. if (event.cached) {
  30. if (event.cachkey != null) {
  31. defaultCacheManager.putFile(event.cachkey!, uint8list);
  32. } else {
  33. defaultCacheManager.putFile(event.url, uint8list);
  34. }
  35. }
  36. emit(CashedImageGetState(bytes: uint8list));
  37. } catch (e) {
  38. emit(CashedImageGetErrorState());
  39. }
  40. });
  41. }
  42. }