diff --git a/lib/ui/common_elements.dart b/lib/ui/common_elements.dart new file mode 100644 index 000000000..bb55ed4de --- /dev/null +++ b/lib/ui/common_elements.dart @@ -0,0 +1,3 @@ +import 'package:flutter/widgets.dart'; + +final nothingToSeeHere = Center(child: Text("Nothing to see here! 👀")); diff --git a/lib/ui/device_folders_gallery_widget.dart b/lib/ui/device_folders_gallery_widget.dart index e2ab78830..3b0eaab75 100644 --- a/lib/ui/device_folders_gallery_widget.dart +++ b/lib/ui/device_folders_gallery_widget.dart @@ -10,6 +10,7 @@ import 'package:photos/models/device_folder.dart'; import 'package:photos/models/filters/favorite_items_filter.dart'; import 'package:photos/models/filters/folder_name_filter.dart'; import 'package:photos/models/filters/video_file_filter.dart'; +import 'package:photos/ui/common_elements.dart'; import 'package:photos/ui/device_folder_page.dart'; import 'package:photos/ui/loading_widget.dart'; import 'package:photos/ui/thumbnail_widget.dart'; @@ -36,10 +37,13 @@ class _DeviceFolderGalleryWidgetState extends State { @override Widget build(BuildContext context) { - return FutureBuilder( + return FutureBuilder>( future: _getDeviceFolders(), builder: (context, snapshot) { if (snapshot.hasData) { + if (snapshot.data.length == 0) { + return nothingToSeeHere; + } return _getDeviceFolderGalleryWidget(snapshot.data); } else if (snapshot.hasError) { return Text(snapshot.error.toString()); diff --git a/lib/ui/gallery.dart b/lib/ui/gallery.dart index 74040122a..8ce74d64a 100644 --- a/lib/ui/gallery.dart +++ b/lib/ui/gallery.dart @@ -7,6 +7,7 @@ import 'package:logging/logging.dart'; import 'package:photos/events/event.dart'; import 'package:photos/models/file.dart'; import 'package:photos/models/selected_files.dart'; +import 'package:photos/ui/common_elements.dart'; import 'package:photos/ui/detail_page.dart'; import 'package:photos/ui/loading_widget.dart'; import 'package:photos/ui/sync_indicator.dart'; @@ -104,7 +105,7 @@ class _GalleryState extends State { Widget _onDataLoaded() { _logger.info("Loaded " + _files.length.toString()); if (_files.isEmpty) { - return Center(child: Text("Nothing to see here! 👀")); + return nothingToSeeHere; } _collateFiles(); _scrollController = ScrollController( @@ -158,6 +159,9 @@ class _GalleryState extends State { } fileIndex--; } + if (fileIndex < 0 || fileIndex >= _collatedFiles.length) { + return Container(); + } var files = _collatedFiles[fileIndex]; return Column( children: [_getDay(files[0].creationTime), _getGallery(files)], diff --git a/lib/ui/remote_folder_gallery_widget.dart b/lib/ui/remote_folder_gallery_widget.dart index 494db2a9d..da56a2a8d 100644 --- a/lib/ui/remote_folder_gallery_widget.dart +++ b/lib/ui/remote_folder_gallery_widget.dart @@ -9,6 +9,7 @@ import 'package:photos/db/folders_db.dart'; import 'package:photos/db/files_db.dart'; import 'package:photos/events/remote_sync_event.dart'; import 'package:photos/models/folder.dart'; +import 'package:photos/ui/common_elements.dart'; import 'package:photos/ui/loading_widget.dart'; import 'package:photos/ui/remote_folder_page.dart'; import 'package:photos/ui/thumbnail_widget.dart'; @@ -42,7 +43,7 @@ class _RemoteFolderGalleryWidgetState extends State { builder: (context, snapshot) { if (snapshot.hasData) { if (snapshot.data.isEmpty) { - return Center(child: Text("Nothing to see here! 👀")); + return nothingToSeeHere; } else { return _getRemoteFolderGalleryWidget(snapshot.data); }