improved empty collection placeholder

This commit is contained in:
Thibault Deckers 2020-04-02 10:28:34 +09:00
parent 805b0ef51f
commit 50632b5212
3 changed files with 31 additions and 7 deletions

View file

@ -2,6 +2,14 @@ import 'package:flutter/material.dart';
import 'package:outline_material_icons/outline_material_icons.dart';
class EmptyContent extends StatelessWidget {
final IconData icon;
final String text;
const EmptyContent({
this.icon = OMIcons.photo,
this.text = 'Nothing!',
});
@override
Widget build(BuildContext context) {
const color = Color(0xFF607D8B);
@ -9,16 +17,16 @@ class EmptyContent extends StatelessWidget {
alignment: const FractionalOffset(.5, .35),
child: Column(
mainAxisSize: MainAxisSize.min,
children: const [
children: [
Icon(
OMIcons.photo,
icon,
size: 64,
color: color,
),
SizedBox(height: 16),
const SizedBox(height: 16),
Text(
'Nothing!',
style: TextStyle(
text,
style: const TextStyle(
color: color,
fontSize: 22,
fontFamily: 'Concourse',

View file

@ -1,4 +1,6 @@
import 'package:aves/model/collection_lens.dart';
import 'package:aves/model/filters/favourite.dart';
import 'package:aves/model/filters/video.dart';
import 'package:aves/widgets/album/collection_app_bar.dart';
import 'package:aves/widgets/album/collection_page.dart';
import 'package:aves/widgets/album/collection_scaling.dart';
@ -7,6 +9,7 @@ import 'package:aves/widgets/album/empty.dart';
import 'package:aves/widgets/common/scroll_thumb.dart';
import 'package:draggable_scrollbar/draggable_scrollbar.dart';
import 'package:flutter/material.dart';
import 'package:outline_material_icons/outline_material_icons.dart';
import 'package:provider/provider.dart';
class ThumbnailCollection extends StatelessWidget {
@ -54,7 +57,7 @@ class ThumbnailCollection extends StatelessWidget {
),
if (collection.isEmpty)
SliverFillRemaining(
child: EmptyContent(),
child: _buildEmptyCollectionPlaceholder(collection),
hasScrollBody: false,
),
...sectionKeys.map((sectionKey) => SectionSliver(
@ -99,4 +102,17 @@ class ThumbnailCollection extends StatelessWidget {
),
);
}
Widget _buildEmptyCollectionPlaceholder(CollectionLens collection) {
return collection.filters.any((filter) => filter is FavouriteFilter)
? const EmptyContent(
icon: OMIcons.favoriteBorder,
text: 'No favourite!',
)
: collection.filters.any((filter) => filter is VideoFilter)
? const EmptyContent(
icon: OMIcons.movie,
)
: const EmptyContent();
}
}

View file

@ -49,7 +49,7 @@ class StatsPage extends StatelessWidget {
Widget build(BuildContext context) {
Widget child;
if (collection.isEmpty) {
child = EmptyContent();
child = const EmptyContent();
} else {
final catalogued = entries.where((entry) => entry.isCatalogued);
final withGps = catalogued.where((entry) => entry.hasGps);