Setup a reload trigger for Gallery

This commit is contained in:
Vishnu Mohandas 2020-06-16 00:33:43 +05:30
parent 0e5416d4ff
commit a387d026ae
4 changed files with 13 additions and 6 deletions

1
lib/events/event.dart Normal file
View file

@ -0,0 +1 @@
class Event {}

View file

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

View file

@ -5,6 +5,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:photos/core/event_bus.dart';
import 'package:photos/events/event.dart';
import 'package:photos/events/photo_opened_event.dart';
import 'package:photos/models/photo.dart';
import 'package:photos/ui/detail_page.dart';
@ -19,12 +20,14 @@ class Gallery extends StatefulWidget {
final Set<Photo> selectedPhotos;
final Function(Set<Photo>) photoSelectionChangeCallback;
final Future<void> Function() syncFunction;
final Stream<Event> reloadTrigger;
Gallery(
this.loadFunction, {
this.selectedPhotos,
this.photoSelectionChangeCallback,
this.syncFunction,
this.reloadTrigger,
});
@override
@ -54,6 +57,11 @@ class _GalleryState extends State<Gallery> {
_openedPhoto = event.photo;
});
});
widget.reloadTrigger.listen((event) {
setState(() {
_requiresLoad = true;
});
});
super.initState();
}

View file

@ -35,15 +35,11 @@ class _HomeWidgetState extends State<HomeWidget> {
ShakeDetector _detector;
int _selectedNavBarItem = 0;
Set<Photo> _selectedPhotos = HashSet<Photo>();
StreamSubscription<LocalPhotosUpdatedEvent> _subscription;
final _deviceFolderGalleryWidget = DeviceFolderGalleryWidget();
final _remoteFolderGalleryWidget = RemoteFolderGalleryWidget();
@override
void initState() {
_subscription = Bus.instance.on<LocalPhotosUpdatedEvent>().listen((event) {
setState(() {});
});
_detector = ShakeDetector.autoStart(
shakeThresholdGravity: 3,
onPhoneShake: () {
@ -116,6 +112,7 @@ class _HomeWidgetState extends State<HomeWidget> {
syncFunction: () {
return PhotoSyncManager.instance.sync();
},
reloadTrigger: Bus.instance.on<LocalPhotosUpdatedEvent>(),
);
}
@ -164,7 +161,6 @@ class _HomeWidgetState extends State<HomeWidget> {
@override
void dispose() {
_detector.stopListening();
_subscription.cancel();
super.dispose();
}
}