hunk.code_window:             PhotoViewGallery.builder(
                 scaleStateChangedCallback: (state) {
                   isZoomed.value = state != PhotoViewScaleState.initial;
                   ref.read(showControlsProvider.notifier).show = !isZoomed.value;
                 },
                 loadingBuilder: (context, event, index) => ImageFiltered(
                   imageFilter: ui.ImageFilter.blur(
                     sigmaX: 1,
                     sigmaY: 1,
                   ),
                   child: ImmichThumbnail(
                     asset: asset(),
                     fit: BoxFit.contain,
                   ),
                 ),
                 pageController: controller,
  
hunk.labels: keep keep keep keep keep replace replace replace replace replace replace replace replace keep keep keep
hunk.after_edit:               loadingBuilder: (context, event, index) => ClipRect(
                   child: Stack(
                     fit: StackFit.expand,
                     children: [
                       BackdropFilter(
                         filter: ui.ImageFilter.blur(
                           sigmaX: 10,
                           sigmaY: 10,
                         ),
                       ),
                       ImmichThumbnail(
                         asset: asset(),
                         fit: BoxFit.contain,
                       ),
                     ],
  
hunk.file_path: mobile/lib/modules/asset_viewer/views/gallery_viewer.dart
hunk.type: replace
file: import 'package:flutter/material.dart';
  import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart';
  
  class DelayedLoadingIndicator extends StatelessWidget {
    /// The delay to avoid showing the loading indicator
    final Duration delay;
  
    /// Defaults to using the [ImmichLoadingIndicator]
    final Widget? child;
  
    /// An optional fade in duration to animate the loading
    final Duration? fadeInDuration;
  
    const DelayedLoadingIndicator({
      super.key,
      this.delay = const Duration(seconds: 3),
      this.child,
      this.fadeInDuration,
    });
  
    @override
    Widget build(BuildContext context) {
      return AnimatedSwitcher(
        duration: fadeInDuration ?? Duration.zero,
        child: FutureBuilder(
          future: Future.delayed(delay),
          builder: (context, snapshot) {
            if (snapshot.connectionState == ConnectionState.done) {
              return child ??
                  const ImmichLoadingIndicator(
                    key: ValueKey('loading'),
                  );
            }
  
            return Container(key: const ValueKey('hiding'));
          },
        ),
      );
    }
  }
  