MotorSignal-App/lib/features/dashboard/widgets/dashboard_layout_switcher.dart

58 lines
1.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../../core/theme/app_colors.dart';
import '../dashboard_config.dart';
/// Layout mode switcher (Sport / Touring / Minimal).
class DashboardLayoutSwitcher extends ConsumerWidget {
const DashboardLayoutSwitcher({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final currentLayout = ref.watch(dashboardConfigProvider);
final isDark = Theme.of(context).brightness == Brightness.dark;
final iconColor = isDark ? AppColors.cyberCyan : AppColors.lightPrimary;
return PopupMenuButton<DashboardLayout>(
icon: Icon(Icons.dashboard_customize_outlined, color: iconColor, size: 20),
tooltip: 'Change Dashboard Layout',
initialValue: currentLayout,
onSelected: (layout) {
ref.read(dashboardConfigProvider.notifier).setLayout(layout);
},
itemBuilder: (context) => [
const PopupMenuItem(
value: DashboardLayout.sport,
child: Row(
children: [
Icon(Icons.sports_motorsports_outlined, size: 18),
SizedBox(width: 8),
Text('Sport Cockpit'),
],
),
),
const PopupMenuItem(
value: DashboardLayout.touring,
child: Row(
children: [
Icon(Icons.map_outlined, size: 18),
SizedBox(width: 8),
Text('Touring (Map & Stats)'),
],
),
),
const PopupMenuItem(
value: DashboardLayout.minimal,
child: Row(
children: [
Icon(Icons.speed_outlined, size: 18),
SizedBox(width: 8),
Text('Minimal HUD'),
],
),
),
],
);
}
}