diff --git a/lib/events/clear_selections.dart b/lib/events/clear_selections.dart new file mode 100644 index 000000000..dd2a11de6 --- /dev/null +++ b/lib/events/clear_selections.dart @@ -0,0 +1,3 @@ +import 'package:photos/events/event.dart'; + +class ClearSelections extends Event {} diff --git a/lib/models/selected_files.dart b/lib/models/selected_files.dart index 262338bd8..99ffea6ae 100644 --- a/lib/models/selected_files.dart +++ b/lib/models/selected_files.dart @@ -1,5 +1,7 @@ import 'package:collection/collection.dart' show IterableExtension; import 'package:flutter/foundation.dart'; +import 'package:flutter/rendering.dart'; +import 'package:photos/core/event_bus.dart'; import 'package:photos/models/file.dart'; class SelectedFiles extends ChangeNotifier { @@ -51,6 +53,7 @@ class SelectedFiles extends ChangeNotifier { } void clearAll() { + Bus.instance.fire(const ClearSelectionEvent()); lastSelections.addAll(files); files.clear(); notifyListeners(); diff --git a/lib/ui/huge_listview/lazy_loading_gallery.dart b/lib/ui/huge_listview/lazy_loading_gallery.dart index be9ddb61b..42ebf1c73 100644 --- a/lib/ui/huge_listview/lazy_loading_gallery.dart +++ b/lib/ui/huge_listview/lazy_loading_gallery.dart @@ -5,9 +5,11 @@ import 'dart:math'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; import 'package:flutter/services.dart'; import 'package:logging/logging.dart'; import 'package:photos/core/constants.dart'; +import 'package:photos/core/event_bus.dart'; import 'package:photos/events/files_updated_event.dart'; import 'package:photos/models/file.dart'; import 'package:photos/models/selected_files.dart'; @@ -291,12 +293,19 @@ class LazyLoadingGridView extends StatefulWidget { class _LazyLoadingGridViewState extends State { bool _shouldRender; + StreamSubscription _clearSelectionEvent; @override void initState() { _shouldRender = widget.shouldRender; widget.shouldSelectAll.addListener(_shouldSelectAllListener); widget.selectedFiles.addListener(_selectedFilesListener); + _clearSelectionEvent = + Bus.instance.on().listen((event) { + if (mounted) { + setState(() {}); + } + }); super.initState(); } @@ -304,6 +313,7 @@ class _LazyLoadingGridViewState extends State { void dispose() { widget.selectedFiles.removeListener(_selectedFilesListener); widget.shouldSelectAll.removeListener(_shouldSelectAllListener); + _clearSelectionEvent.cancel(); super.dispose(); }