import 'package:app/core/ui/panel.dart'; import 'package:app/modules/settings/modules/app/app_settings_view.dart'; import 'package:app/modules/settings/modules/help/feedback_view.dart'; import 'package:app/modules/settings/modules/help/help_view.dart'; import 'package:app/modules/settings/modules/help/legal_view.dart'; import 'package:app/modules/settings/modules/user_data/account_management_view.dart'; import 'package:app/modules/settings/modules/user_data/personal_data_view.dart'; import 'package:flutter/material.dart'; class SettingsView extends StatelessWidget { const SettingsView({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Einstellungen')), body: PanelNavigator(rootBuilder: (ctx) => _CategoryList()), ); } } /// ----------------- Root panel: Category list ----------------- class _CategoryList extends StatelessWidget { @override Widget build(BuildContext context) { final scheme = Theme.of(context).colorScheme; Widget tile(IconData icon, String label, Widget Function() detail) { return Padding( padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), child: InkWell( borderRadius: BorderRadius.circular(14), onTap: () => context.panels.push((_) => detail(), title: label), child: Container( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 10), decoration: BoxDecoration( color: Colors.transparent, borderRadius: BorderRadius.circular(14), ), child: Row( children: [ Icon(icon), const SizedBox(width: 12), Expanded(child: Text(label)), Icon(Icons.chevron_right, color: scheme.outline), ], ), ), ), ); } return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const _SectionHeader('App-Einstellungen'), tile(Icons.tune, 'App-Einstellungen', () => const AppSettingsView()), const SizedBox(height: 12), const _SectionHeader('Meine Daten'), tile( Icons.badge_outlined, 'Persönliche Daten', () => const PersonalPanel(), ), tile( Icons.manage_accounts_outlined, 'Kontoverwaltung', () => const AccountPanel(), ), const SizedBox(height: 12), const _SectionHeader('Hilfe'), tile(Icons.help_outline, 'Hilfe', () => const HelpPanel()), tile(Icons.feedback_outlined, 'Feedback', () => const FeedbackPanel()), tile( Icons.gavel_outlined, 'Rechtliches & Datenschutz', () => const LegalPanel(), ), const SizedBox(height: 24), const Divider(), ListTile( leading: const Icon(Icons.logout), title: const Text('Abmelden'), onTap: () { ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text('Logout… (noch nicht implementiert)'), ), ); }, ), ], ); } } class _SectionHeader extends StatelessWidget { final String text; const _SectionHeader(this.text); @override Widget build(BuildContext context) => Padding( padding: const EdgeInsets.fromLTRB(16, 12, 16, 6), child: Text( text, style: Theme.of(context).textTheme.labelMedium?.copyWith( fontWeight: FontWeight.w700, letterSpacing: .2, ), ), ); }