Merge pull request #651 from ente-io/select-all-bug-fix

bug fix : selected files thumbnail not getting refreshed on 'cancel'
This commit is contained in:
Ashil 2022-11-18 18:14:55 +05:30 committed by GitHub
commit 264a7433fc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 0 deletions

View file

@ -0,0 +1,3 @@
import 'package:photos/events/event.dart';
class ClearSelections extends Event {}

View file

@ -1,5 +1,7 @@
import 'package:collection/collection.dart' show IterableExtension; import 'package:collection/collection.dart' show IterableExtension;
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/rendering.dart';
import 'package:photos/core/event_bus.dart';
import 'package:photos/models/file.dart'; import 'package:photos/models/file.dart';
class SelectedFiles extends ChangeNotifier { class SelectedFiles extends ChangeNotifier {
@ -51,6 +53,7 @@ class SelectedFiles extends ChangeNotifier {
} }
void clearAll() { void clearAll() {
Bus.instance.fire(const ClearSelectionEvent());
lastSelections.addAll(files); lastSelections.addAll(files);
files.clear(); files.clear();
notifyListeners(); notifyListeners();

View file

@ -5,9 +5,11 @@ import 'dart:math';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:photos/core/constants.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/events/files_updated_event.dart';
import 'package:photos/models/file.dart'; import 'package:photos/models/file.dart';
import 'package:photos/models/selected_files.dart'; import 'package:photos/models/selected_files.dart';
@ -291,12 +293,19 @@ class LazyLoadingGridView extends StatefulWidget {
class _LazyLoadingGridViewState extends State<LazyLoadingGridView> { class _LazyLoadingGridViewState extends State<LazyLoadingGridView> {
bool _shouldRender; bool _shouldRender;
StreamSubscription<ClearSelectionEvent> _clearSelectionEvent;
@override @override
void initState() { void initState() {
_shouldRender = widget.shouldRender; _shouldRender = widget.shouldRender;
widget.shouldSelectAll.addListener(_shouldSelectAllListener); widget.shouldSelectAll.addListener(_shouldSelectAllListener);
widget.selectedFiles.addListener(_selectedFilesListener); widget.selectedFiles.addListener(_selectedFilesListener);
_clearSelectionEvent =
Bus.instance.on<ClearSelectionEvent>().listen((event) {
if (mounted) {
setState(() {});
}
});
super.initState(); super.initState();
} }
@ -304,6 +313,7 @@ class _LazyLoadingGridViewState extends State<LazyLoadingGridView> {
void dispose() { void dispose() {
widget.selectedFiles.removeListener(_selectedFilesListener); widget.selectedFiles.removeListener(_selectedFilesListener);
widget.shouldSelectAll.removeListener(_shouldSelectAllListener); widget.shouldSelectAll.removeListener(_shouldSelectAllListener);
_clearSelectionEvent.cancel();
super.dispose(); super.dispose();
} }