empty content placeholder fix
This commit is contained in:
parent
a6c7f48799
commit
049840bd73
3 changed files with 30 additions and 11 deletions
|
@ -7,8 +7,8 @@ class EmptyContent extends StatelessWidget {
|
||||||
final AlignmentGeometry alignment;
|
final AlignmentGeometry alignment;
|
||||||
|
|
||||||
const EmptyContent({
|
const EmptyContent({
|
||||||
this.icon = AIcons.image,
|
@required this.icon = AIcons.image,
|
||||||
this.text = 'No images',
|
@required this.text = 'No images',
|
||||||
this.alignment = const FractionalOffset(.5, .35),
|
this.alignment = const FractionalOffset(.5, .35),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:aves/model/collection_lens.dart';
|
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/favourite.dart';
|
||||||
import 'package:aves/model/filters/mime.dart';
|
import 'package:aves/model/filters/mime.dart';
|
||||||
import 'package:aves/model/mime_types.dart';
|
import 'package:aves/model/mime_types.dart';
|
||||||
|
@ -206,16 +207,31 @@ class _CollectionScrollViewState extends State<CollectionScrollView> {
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildEmptyCollectionPlaceholder(CollectionLens collection) {
|
Widget _buildEmptyCollectionPlaceholder(CollectionLens collection) {
|
||||||
return collection.filters.any((filter) => filter is FavouriteFilter)
|
return ValueListenableBuilder<SourceState>(
|
||||||
? const EmptyContent(
|
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,
|
icon: AIcons.favourite,
|
||||||
text: 'No favourites',
|
text: 'No favourites',
|
||||||
)
|
);
|
||||||
: collection.filters.any((filter) => filter is MimeFilter && filter.mime == MimeTypes.ANY_VIDEO)
|
}
|
||||||
? const EmptyContent(
|
debugPrint('collection.filters=${collection.filters}');
|
||||||
icon: AIcons.video,
|
if (collection.filters.any((filter) => filter is MimeFilter && filter.mime == MimeTypes.ANY_VIDEO)) {
|
||||||
)
|
return const EmptyContent(
|
||||||
: const EmptyContent();
|
icon: AIcons.video,
|
||||||
|
text: 'No videos',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return const EmptyContent(
|
||||||
|
icon: AIcons.image,
|
||||||
|
text: 'No images',
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onScrollChange() {
|
void _onScrollChange() {
|
||||||
|
|
|
@ -49,7 +49,10 @@ class StatsPage extends StatelessWidget {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
Widget child;
|
Widget child;
|
||||||
if (collection.isEmpty) {
|
if (collection.isEmpty) {
|
||||||
child = const EmptyContent();
|
child = const EmptyContent(
|
||||||
|
icon: AIcons.image,
|
||||||
|
text: 'No images',
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
final byMimeTypes = groupBy(entries, (entry) => entry.mimeType).map<String, int>((k, v) => MapEntry(k, v.length));
|
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/')));
|
final imagesByMimeTypes = Map.fromEntries(byMimeTypes.entries.where((kv) => kv.key.startsWith('image/')));
|
||||||
|
|
Loading…
Reference in a new issue