From 049840bd73481822ad3d09964a26de3e77534eba Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Thu, 11 Jun 2020 15:17:32 +0900 Subject: [PATCH] empty content placeholder fix --- lib/widgets/album/empty.dart | 4 +-- lib/widgets/album/thumbnail_collection.dart | 32 +++++++++++++++------ lib/widgets/stats/stats.dart | 5 +++- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/lib/widgets/album/empty.dart b/lib/widgets/album/empty.dart index 890ac4f33..eeeb89821 100644 --- a/lib/widgets/album/empty.dart +++ b/lib/widgets/album/empty.dart @@ -7,8 +7,8 @@ class EmptyContent extends StatelessWidget { final AlignmentGeometry alignment; const EmptyContent({ - this.icon = AIcons.image, - this.text = 'No images', + @required this.icon = AIcons.image, + @required this.text = 'No images', this.alignment = const FractionalOffset(.5, .35), }); diff --git a/lib/widgets/album/thumbnail_collection.dart b/lib/widgets/album/thumbnail_collection.dart index 5d5b89ac5..adc6e7cfc 100644 --- a/lib/widgets/album/thumbnail_collection.dart +++ b/lib/widgets/album/thumbnail_collection.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:aves/model/collection_lens.dart'; +import 'package:aves/model/collection_source.dart'; import 'package:aves/model/filters/favourite.dart'; import 'package:aves/model/filters/mime.dart'; import 'package:aves/model/mime_types.dart'; @@ -206,16 +207,31 @@ class _CollectionScrollViewState extends State { } Widget _buildEmptyCollectionPlaceholder(CollectionLens collection) { - return collection.filters.any((filter) => filter is FavouriteFilter) - ? const EmptyContent( + return ValueListenableBuilder( + valueListenable: collection.source.stateNotifier, + builder: (context, sourceState, child) { + if (sourceState == SourceState.loading) { + return const SizedBox.shrink(); + } + if (collection.filters.any((filter) => filter is FavouriteFilter)) { + return const EmptyContent( icon: AIcons.favourite, text: 'No favourites', - ) - : collection.filters.any((filter) => filter is MimeFilter && filter.mime == MimeTypes.ANY_VIDEO) - ? const EmptyContent( - icon: AIcons.video, - ) - : const EmptyContent(); + ); + } + debugPrint('collection.filters=${collection.filters}'); + if (collection.filters.any((filter) => filter is MimeFilter && filter.mime == MimeTypes.ANY_VIDEO)) { + return const EmptyContent( + icon: AIcons.video, + text: 'No videos', + ); + } + return const EmptyContent( + icon: AIcons.image, + text: 'No images', + ); + }, + ); } void _onScrollChange() { diff --git a/lib/widgets/stats/stats.dart b/lib/widgets/stats/stats.dart index 5ac88639a..a887d193d 100644 --- a/lib/widgets/stats/stats.dart +++ b/lib/widgets/stats/stats.dart @@ -49,7 +49,10 @@ class StatsPage extends StatelessWidget { Widget build(BuildContext context) { Widget child; if (collection.isEmpty) { - child = const EmptyContent(); + child = const EmptyContent( + icon: AIcons.image, + text: 'No images', + ); } else { final byMimeTypes = groupBy(entries, (entry) => entry.mimeType).map((k, v) => MapEntry(k, v.length)); final imagesByMimeTypes = Map.fromEntries(byMimeTypes.entries.where((kv) => kv.key.startsWith('image/')));