import 'dart:async'; import 'package:flutter/material.dart'; import 'package:photos/core/event_bus.dart'; import 'package:photos/events/local_photos_updated_event.dart'; import 'package:photos/models/device_folder.dart'; import 'package:photos/models/file.dart'; import 'package:photos/file_repository.dart'; import 'package:photos/ui/gallery.dart'; import 'package:photos/ui/gallery_app_bar_widget.dart'; import 'package:logging/logging.dart'; class DeviceFolderPage extends StatefulWidget { final DeviceFolder folder; const DeviceFolderPage(this.folder, {Key key}) : super(key: key); @override _DeviceFolderPageState createState() => _DeviceFolderPageState(); } class _DeviceFolderPageState extends State { final logger = Logger("DeviceFolderPageState"); Set _selectedFiles = Set(); @override Widget build(Object context) { return Scaffold( appBar: GalleryAppBarWidget( GalleryAppBarType.local_folder, widget.folder.name, widget.folder.thumbnail.deviceFolder, _selectedFiles, onSelectionClear: () { setState(() { _selectedFiles.clear(); }); }, ), body: Gallery( () => Future.value(_getFilteredFiles(FileRepository.instance.files)), selectedFiles: _selectedFiles, onFileSelectionChange: (Set selectedFiles) { setState(() { _selectedFiles = selectedFiles; }); }, reloadEvent: Bus.instance.on(), ), ); } List _getFilteredFiles(List unfilteredFiles) { if (widget.folder.filter == null) { return unfilteredFiles; } final List filteredFiles = List(); for (File file in unfilteredFiles) { if (widget.folder.filter.shouldInclude(file)) { filteredFiles.add(file); } } return filteredFiles; } }