aves/lib/widgets/navigation/drawer/tile.dart
2022-05-12 21:48:46 +09:00

81 lines
2.2 KiB
Dart

import 'package:aves/model/filters/filters.dart';
import 'package:aves/theme/colors.dart';
import 'package:aves/theme/icons.dart';
import 'package:aves/widgets/debug/app_debug_page.dart';
import 'package:aves/widgets/filter_grids/albums_page.dart';
import 'package:aves/widgets/filter_grids/countries_page.dart';
import 'package:aves/widgets/filter_grids/tags_page.dart';
import 'package:aves/widgets/navigation/nav_display.dart';
import 'package:flutter/material.dart';
class DrawerFilterIcon extends StatelessWidget {
final CollectionFilter? filter;
const DrawerFilterIcon({
super.key,
required this.filter,
});
@override
Widget build(BuildContext context) {
final textScaleFactor = MediaQuery.textScaleFactorOf(context);
final iconSize = 24 * textScaleFactor;
final _filter = filter;
if (_filter == null) return Icon(AIcons.allCollection, size: iconSize);
return _filter.iconBuilder(context, iconSize) ?? const SizedBox();
}
}
class DrawerFilterTitle extends StatelessWidget {
final CollectionFilter? filter;
const DrawerFilterTitle({
super.key,
required this.filter,
});
@override
Widget build(BuildContext context) => Text(NavigationDisplay.getFilterTitle(context, filter));
}
class DrawerPageIcon extends StatelessWidget {
final String route;
const DrawerPageIcon({
super.key,
required this.route,
});
@override
Widget build(BuildContext context) {
final icon = NavigationDisplay.getPageIcon(route);
if (icon != null) {
switch (route) {
case AlbumListPage.routeName:
case CountryListPage.routeName:
case TagListPage.routeName:
return Icon(icon);
case AppDebugPage.routeName:
return ShaderMask(
shaderCallback: AvesColorsData.debugGradient.createShader,
blendMode: BlendMode.srcIn,
child: Icon(icon),
);
}
}
return const SizedBox();
}
}
class DrawerPageTitle extends StatelessWidget {
final String route;
const DrawerPageTitle({
super.key,
required this.route,
});
@override
Widget build(BuildContext context) => Text(NavigationDisplay.getPageTitle(context, route));
}