import 'package:ac_web/Api/Dtos/EReportType.dart'; import 'package:ac_web/Pages/ReportsByType.dart'; import 'package:ac_web/Widgets/LatestReportHeader.dart'; import 'package:ac_web/Widgets/ReportTypeIcons.dart'; import 'package:flutter/material.dart'; /// Overview page that lists every available report type as a button. class Reports extends StatelessWidget { const Reports({super.key}); @override Widget build(BuildContext context) { List widgets = []; widgets.add(LatestReportHeader(text: "Reports", bigHeader: true,)); widgets.add(const SizedBox(height: 8)); for (final EReportType type in EReportType.values) { widgets.add(_buildButton(context, type)); } return ListView( padding: EdgeInsetsGeometry.all(8), children: widgets, ); } Widget _buildButton(BuildContext context, EReportType type) { final ColorScheme colors = Theme.of(context).colorScheme; return Padding( padding: const EdgeInsets.symmetric(vertical: 6), child: Material( color: colors.surfaceContainerHighest, borderRadius: BorderRadius.circular(12), clipBehavior: Clip.antiAlias, child: InkWell( onTap: () => _openType(context, type), child: Padding( padding: const EdgeInsets.all(16), child: Row( children: [ CircleAvatar( backgroundColor: colors.inversePrimary, child: Icon(type.icon, color: colors.onSurface), ), const SizedBox(width: 16), Expanded( child: Text( type.displayName, style: const TextStyle( fontSize: 18, fontWeight: FontWeight.w600, ), ), ), const Icon(Icons.chevron_right), ], ), ), ), ), ); } /// Opens a page that only shows the reports of the given type. void _openType(BuildContext context, EReportType type) { Navigator.of(context).push( MaterialPageRoute( builder: (context) => ReportsByType(type: type), ), ); } }