empty content placeholder fix

This commit is contained in:
Thibault Deckers 2020-06-11 15:17:32 +09:00
parent a6c7f48799
commit 049840bd73
3 changed files with 30 additions and 11 deletions

View file

@ -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),
});

View file

@ -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<CollectionScrollView> {
}
Widget _buildEmptyCollectionPlaceholder(CollectionLens collection) {
return collection.filters.any((filter) => filter is FavouriteFilter)
? const EmptyContent(
return ValueListenableBuilder<SourceState>(
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(
);
}
debugPrint('collection.filters=${collection.filters}');
if (collection.filters.any((filter) => filter is MimeFilter && filter.mime == MimeTypes.ANY_VIDEO)) {
return const EmptyContent(
icon: AIcons.video,
)
: const EmptyContent();
text: 'No videos',
);
}
return const EmptyContent(
icon: AIcons.image,
text: 'No images',
);
},
);
}
void _onScrollChange() {

View file

@ -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<String, int>((k, v) => MapEntry(k, v.length));
final imagesByMimeTypes = Map.fromEntries(byMimeTypes.entries.where((kv) => kv.key.startsWith('image/')));