diff --git a/lib/ui/viewer/gallery/gallery.dart b/lib/ui/viewer/gallery/gallery.dart index 64409ab79..3e64ada27 100644 --- a/lib/ui/viewer/gallery/gallery.dart +++ b/lib/ui/viewer/gallery/gallery.dart @@ -9,6 +9,7 @@ import 'package:photos/core/event_bus.dart'; import 'package:photos/ente_theme_data.dart'; import 'package:photos/events/event.dart'; import 'package:photos/events/files_updated_event.dart'; +import 'package:photos/events/tab_changed_event.dart'; import 'package:photos/models/file.dart'; import 'package:photos/models/file_load_result.dart'; import 'package:photos/models/selected_files.dart'; @@ -68,12 +69,16 @@ class _GalleryState extends State { Logger _logger; List> _collatedFiles = []; bool _hasLoadedFiles = false; + ItemScrollController _itemScroller; StreamSubscription _reloadEventSubscription; + StreamSubscription _tabDoubleTapEvent; final _forceReloadEventSubscriptions = >[]; @override void initState() { _logger = Logger("Gallery_" + widget.tagPrefix); + _itemScroller = ItemScrollController(); + _logger.info("initState"); if (widget.reloadEvent != null) { _reloadEventSubscription = widget.reloadEvent.listen((event) async { @@ -82,6 +87,14 @@ class _GalleryState extends State { _onFilesLoaded(result.files); }); } + _tabDoubleTapEvent = + Bus.instance.on().listen((event) async { + // todo: Assign ID to Gallery and fire generic event with ID & + // target index/date + if (mounted && event.selectedIndex == 0) { + _itemScroller.jumpTo(index: 0); + } + }); if (widget.forceReloadEvents != null) { for (final event in widget.forceReloadEvents) { _forceReloadEventSubscriptions.add( @@ -159,6 +172,7 @@ class _GalleryState extends State { @override void dispose() { _reloadEventSubscription?.cancel(); + _tabDoubleTapEvent?.cancel(); for (final subscription in _forceReloadEventSubscriptions) { subscription.cancel(); } @@ -177,7 +191,7 @@ class _GalleryState extends State { Widget _getListView() { return HugeListView>( key: _hugeListViewKey, - controller: ItemScrollController(), + controller: _itemScroller, startIndex: 0, totalCount: _collatedFiles.length, isDraggableScrollbarEnabled: _collatedFiles.length > 30,