improved empty collection placeholder
This commit is contained in:
parent
805b0ef51f
commit
50632b5212
3 changed files with 31 additions and 7 deletions
|
@ -2,6 +2,14 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:outline_material_icons/outline_material_icons.dart';
|
import 'package:outline_material_icons/outline_material_icons.dart';
|
||||||
|
|
||||||
class EmptyContent extends StatelessWidget {
|
class EmptyContent extends StatelessWidget {
|
||||||
|
final IconData icon;
|
||||||
|
final String text;
|
||||||
|
|
||||||
|
const EmptyContent({
|
||||||
|
this.icon = OMIcons.photo,
|
||||||
|
this.text = 'Nothing!',
|
||||||
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
const color = Color(0xFF607D8B);
|
const color = Color(0xFF607D8B);
|
||||||
|
@ -9,16 +17,16 @@ class EmptyContent extends StatelessWidget {
|
||||||
alignment: const FractionalOffset(.5, .35),
|
alignment: const FractionalOffset(.5, .35),
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: const [
|
children: [
|
||||||
Icon(
|
Icon(
|
||||||
OMIcons.photo,
|
icon,
|
||||||
size: 64,
|
size: 64,
|
||||||
color: color,
|
color: color,
|
||||||
),
|
),
|
||||||
SizedBox(height: 16),
|
const SizedBox(height: 16),
|
||||||
Text(
|
Text(
|
||||||
'Nothing!',
|
text,
|
||||||
style: TextStyle(
|
style: const TextStyle(
|
||||||
color: color,
|
color: color,
|
||||||
fontSize: 22,
|
fontSize: 22,
|
||||||
fontFamily: 'Concourse',
|
fontFamily: 'Concourse',
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
import 'package:aves/model/collection_lens.dart';
|
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_app_bar.dart';
|
||||||
import 'package:aves/widgets/album/collection_page.dart';
|
import 'package:aves/widgets/album/collection_page.dart';
|
||||||
import 'package:aves/widgets/album/collection_scaling.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:aves/widgets/common/scroll_thumb.dart';
|
||||||
import 'package:draggable_scrollbar/draggable_scrollbar.dart';
|
import 'package:draggable_scrollbar/draggable_scrollbar.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:outline_material_icons/outline_material_icons.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class ThumbnailCollection extends StatelessWidget {
|
class ThumbnailCollection extends StatelessWidget {
|
||||||
|
@ -54,7 +57,7 @@ class ThumbnailCollection extends StatelessWidget {
|
||||||
),
|
),
|
||||||
if (collection.isEmpty)
|
if (collection.isEmpty)
|
||||||
SliverFillRemaining(
|
SliverFillRemaining(
|
||||||
child: EmptyContent(),
|
child: _buildEmptyCollectionPlaceholder(collection),
|
||||||
hasScrollBody: false,
|
hasScrollBody: false,
|
||||||
),
|
),
|
||||||
...sectionKeys.map((sectionKey) => SectionSliver(
|
...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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@ class StatsPage extends StatelessWidget {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
Widget child;
|
Widget child;
|
||||||
if (collection.isEmpty) {
|
if (collection.isEmpty) {
|
||||||
child = EmptyContent();
|
child = const EmptyContent();
|
||||||
} else {
|
} else {
|
||||||
final catalogued = entries.where((entry) => entry.isCatalogued);
|
final catalogued = entries.where((entry) => entry.isCatalogued);
|
||||||
final withGps = catalogued.where((entry) => entry.hasGps);
|
final withGps = catalogued.where((entry) => entry.hasGps);
|
||||||
|
|
Loading…
Reference in a new issue