diff --git a/lib/widgets/album/filtered_collection_page.dart b/lib/widgets/album/filtered_collection_page.dart index 1202887ff..fb452a19e 100644 --- a/lib/widgets/album/filtered_collection_page.dart +++ b/lib/widgets/album/filtered_collection_page.dart @@ -1,8 +1,12 @@ import 'package:aves/model/collection_filters.dart'; import 'package:aves/model/collection_lens.dart'; +import 'package:aves/widgets/album/all_collection_page.dart'; import 'package:aves/widgets/album/thumbnail_collection.dart'; +import 'package:aves/widgets/common/menu_row.dart'; import 'package:aves/widgets/common/providers/media_query_data_provider.dart'; +import 'package:aves/widgets/stats.dart'; import 'package:flutter/material.dart'; +import 'package:outline_material_icons/outline_material_icons.dart'; import 'package:provider/provider.dart'; class FilteredCollectionPage extends StatelessWidget { @@ -23,6 +27,7 @@ class FilteredCollectionPage extends StatelessWidget { child: ThumbnailCollection( appBar: SliverAppBar( title: Text(title), + actions: _buildActions(), floating: true, ), ), @@ -31,4 +36,43 @@ class FilteredCollectionPage extends StatelessWidget { ), ); } + + static List _buildActions() { + return [ + Builder( + builder: (context) => Consumer( + builder: (context, collection, child) => PopupMenuButton( + itemBuilder: (context) => [ + PopupMenuItem( + value: AlbumAction.stats, + child: MenuRow(text: 'Stats', icon: OMIcons.pieChart), + ), + ], + onSelected: (action) => _onActionSelected(context, collection, action), + ), + ), + ), + ]; + } + + static void _onActionSelected(BuildContext context, CollectionLens collection, AlbumAction action) { + switch (action) { + case AlbumAction.stats: + _goToStats(context, collection); + break; + default: + break; + } + } + + static Future _goToStats(BuildContext context, CollectionLens collection) { + return Navigator.push( + context, + MaterialPageRoute( + builder: (context) => StatsPage( + collection: collection, + ), + ), + ); + } }