|
|
|
|
@ -1,9 +1,11 @@
|
|
|
|
|
import 'dart:async';
|
|
|
|
|
import 'dart:io';
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
|
|
|
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
|
|
|
|
|
import 'package:immich_mobile/domain/services/timeline.service.dart';
|
|
|
|
|
import 'package:immich_mobile/domain/utils/event_stream.dart';
|
|
|
|
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
|
|
|
|
import 'package:immich_mobile/extensions/translate_extensions.dart';
|
|
|
|
|
import 'package:immich_mobile/presentation/widgets/images/image_provider.dart';
|
|
|
|
|
@ -28,6 +30,20 @@ class MesmerizingSliverAppBar extends ConsumerStatefulWidget {
|
|
|
|
|
class _MesmerizingSliverAppBarState
|
|
|
|
|
extends ConsumerState<MesmerizingSliverAppBar> {
|
|
|
|
|
double _scrollProgress = 0.0;
|
|
|
|
|
StreamSubscription? _reloadSubscription;
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
void initState() {
|
|
|
|
|
super.initState();
|
|
|
|
|
_reloadSubscription =
|
|
|
|
|
EventStream.shared.listen<TimelineReloadEvent>((_) => setState(() {}));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
void dispose() {
|
|
|
|
|
_reloadSubscription?.cancel();
|
|
|
|
|
super.dispose();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
double _calculateScrollProgress(FlexibleSpaceBarSettings? settings) {
|
|
|
|
|
if (settings?.maxExtent == null || settings?.minExtent == null) {
|
|
|
|
|
|