58 lines
1.8 KiB
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'),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
);
|
|
}
|
|
}
|