aves/lib/widgets/navigation/drawer/tile.dart
2023-11-29 19:48:28 +01:00

76 lines
1.9 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/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 textScaler = MediaQuery.textScalerOf(context);
final iconSize = textScaler.scale(24);
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 AppDebugPage.routeName:
return ShaderMask(
shaderCallback: AvesColorsData.debugGradient.createShader,
blendMode: BlendMode.srcIn,
child: Icon(icon),
);
default:
return 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));
}