widgetref_extensions.dart 771 B

123456789101112131415161718192021
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_hooks/flutter_hooks.dart';
  3. import 'package:hooks_riverpod/hooks_riverpod.dart';
  4. import 'package:immich_mobile/shared/providers/immich_loading_overlay.provider.dart';
  5. extension LoadingOverlay on WidgetRef {
  6. ValueNotifier<bool> useProcessingOverlay() {
  7. final result = useState(false);
  8. final immichOverlayController =
  9. read(immichLoadingOverlayController.notifier);
  10. useValueChanged(
  11. result.value,
  12. (_, __) => result.value
  13. ? WidgetsBinding.instance
  14. .addPostFrameCallback((_) => immichOverlayController.show())
  15. : WidgetsBinding.instance
  16. .addPostFrameCallback((_) => immichOverlayController.hide()),
  17. );
  18. return result;
  19. }
  20. }