diff --git a/lib/ui/gallery_container_widget.dart b/lib/ui/gallery_container_widget.dart deleted file mode 100644 index c49ba85c0..000000000 --- a/lib/ui/gallery_container_widget.dart +++ /dev/null @@ -1,87 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; -import 'package:photos/models/photo.dart'; -import 'package:photos/photo_repository.dart'; -import 'package:photos/ui/gallery.dart'; -import 'package:photos/ui/loading_widget.dart'; -import 'package:photos/ui/search_page.dart'; -import 'package:photos/utils/important_items_filter.dart'; - -// TODO: Remove redundant layer -class GalleryContainer extends StatefulWidget { - final Set selectedPhotos; - final Function(Set) photoSelectionChangeCallback; - - const GalleryContainer( - this.selectedPhotos, - this.photoSelectionChangeCallback, { - Key key, - }) : super(key: key); - - @override - _GalleryContainerState createState() => _GalleryContainerState(); -} - -class _GalleryContainerState extends State { - static final importantItemsFilter = ImportantItemsFilter(); - - @override - Widget build(BuildContext context) { - return Column( - children: [_buildHero(context), _buildGallery()], - ); - } - - FutureBuilder _buildGallery() { - return FutureBuilder( - future: PhotoRepository.instance.loadPhotos(), - builder: (context, snapshot) { - if (snapshot.hasData) { - return Flexible( - child: Gallery( - getFilteredPhotos(PhotoRepository.instance.photos), - widget.selectedPhotos, - photoSelectionChangeCallback: widget.photoSelectionChangeCallback, - ), - ); - } else if (snapshot.hasError) { - return Text("Error!"); - } else { - return loadWidget; - } - }, - ); - } - - Hero _buildHero(BuildContext context) { - return Hero( - child: TextField( - readOnly: true, - onTap: () { - Navigator.of(context).push( - MaterialPageRoute( - builder: (BuildContext context) { - return SearchPage(); - }, - ), - ); - }, - decoration: InputDecoration( - border: InputBorder.none, - hintText: 'Search "Paris"', - contentPadding: const EdgeInsets.all(12.0), - ), - ), - tag: "search"); - } - - List getFilteredPhotos(List unfilteredPhotos) { - final List filteredPhotos = List(); - for (Photo photo in unfilteredPhotos) { - if (importantItemsFilter.shouldInclude(photo)) { - filteredPhotos.add(photo); - } - } - return filteredPhotos; - } -} diff --git a/lib/ui/home_widget.dart b/lib/ui/home_widget.dart index f65be0a4e..baf914569 100644 --- a/lib/ui/home_widget.dart +++ b/lib/ui/home_widget.dart @@ -9,8 +9,10 @@ import 'package:photos/events/local_photos_updated_event.dart'; import 'package:photos/models/photo.dart'; import 'package:photos/photo_repository.dart'; import 'package:photos/ui/album_list_widget.dart'; +import 'package:photos/ui/gallery.dart'; import 'package:photos/ui/gallery_app_bar_widget.dart'; -import 'package:photos/ui/gallery_container_widget.dart'; +import 'package:photos/ui/loading_widget.dart'; +import 'package:photos/utils/important_items_filter.dart'; import 'package:photos/utils/logging_util.dart'; import 'package:shake/shake.dart'; import 'package:logging/logging.dart'; @@ -25,6 +27,7 @@ class HomeWidget extends StatefulWidget { } class _HomeWidgetState extends State { + static final importantItemsFilter = ImportantItemsFilter(); final _logger = Logger("HomeWidgetState"); ShakeDetector _detector; int _selectedNavBarItem = 0; @@ -51,31 +54,37 @@ class _HomeWidgetState extends State { appBar: GalleryAppBarWidget( widget.title, _selectedPhotos, - onSelectionClear: () { - setState(() { - _selectedPhotos.clear(); - }); - }, + onSelectionClear: _clearSelectedPhotos, onPhotosDeleted: (_) { - setState(() { - _selectedPhotos.clear(); - }); + _clearSelectedPhotos(); }, ), bottomNavigationBar: _buildBottomNavigationBar(), - body: IndexedStack( - children: [ - GalleryContainer( - _selectedPhotos, - (Set selectedPhotos) { - setState(() { - _selectedPhotos = selectedPhotos; - }); - }, - ), - AlbumListWidget(PhotoRepository.instance.photos) - ], - index: _selectedNavBarItem, + body: FutureBuilder( + future: PhotoRepository.instance.loadPhotos(), + builder: (context, snapshot) { + if (snapshot.hasData) { + return IndexedStack( + children: [ + Gallery( + _getFilteredPhotos(PhotoRepository.instance.photos), + _selectedPhotos, + photoSelectionChangeCallback: (Set selectedPhotos) { + setState(() { + _selectedPhotos = selectedPhotos; + }); + }, + ), + AlbumListWidget(PhotoRepository.instance.photos) + ], + index: _selectedNavBarItem, + ); + } else if (snapshot.hasError) { + return Text("Error!"); + } else { + return loadWidget; + } + }, ), ); } @@ -102,6 +111,22 @@ class _HomeWidgetState extends State { ); } + List _getFilteredPhotos(List unfilteredPhotos) { + final List filteredPhotos = List(); + for (Photo photo in unfilteredPhotos) { + if (importantItemsFilter.shouldInclude(photo)) { + filteredPhotos.add(photo); + } + } + return filteredPhotos; + } + + void _clearSelectedPhotos() { + setState(() { + _selectedPhotos.clear(); + }); + } + @override void dispose() { _detector.stopListening();