diff --git a/lib/pages/routes_page.dart b/lib/pages/routes_page.dart index 56b4362..88b280a 100644 --- a/lib/pages/routes_page.dart +++ b/lib/pages/routes_page.dart @@ -5,12 +5,52 @@ import '../providers/providers.dart'; import '../utils/breakpoints.dart'; import '../components/collapsible_routes_sidebar.dart'; import '../components/dark_mode_map.dart'; +import '../services/location_permission_service.dart'; import 'deliveries_page.dart'; import 'settings_page.dart'; -class RoutesPage extends ConsumerWidget { +class RoutesPage extends ConsumerStatefulWidget { const RoutesPage({super.key}); + @override + ConsumerState createState() => _RoutesPageState(); +} + +class _RoutesPageState extends ConsumerState { + late LocationPermissionService _permissionService; + + @override + void initState() { + super.initState(); + _permissionService = LocationPermissionService(); + _requestLocationPermissionOnce(); + } + + Future _requestLocationPermissionOnce() async { + try { + final hasPermission = await _permissionService.hasLocationPermission(); + if (!hasPermission && mounted) { + final result = await _permissionService.requestLocationPermission(); + result.when( + granted: () { + debugPrint('Location permission granted'); + }, + denied: () { + debugPrint('Location permission denied'); + }, + permanentlyDenied: () { + debugPrint('Location permission permanently denied'); + }, + error: (message) { + debugPrint('Location permission error: $message'); + }, + ); + } + } catch (e) { + debugPrint('Error requesting location permission: $e'); + } + } + void _navigateToDeliveries(BuildContext context, DeliveryRoute route) { Navigator.of(context).push( MaterialPageRoute(