Request location permission on app startup

Changed RoutesPage from ConsumerWidget to ConsumerStatefulWidget to request
location permission when app launches. Permission is requested silently without
blocking UI and silently logged on grant/denial.

Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Jean-Philippe Brule 2025-11-15 20:55:52 -05:00
parent 70e4a439b9
commit 1a1d00f344

View File

@ -5,12 +5,52 @@ import '../providers/providers.dart';
import '../utils/breakpoints.dart'; import '../utils/breakpoints.dart';
import '../components/collapsible_routes_sidebar.dart'; import '../components/collapsible_routes_sidebar.dart';
import '../components/dark_mode_map.dart'; import '../components/dark_mode_map.dart';
import '../services/location_permission_service.dart';
import 'deliveries_page.dart'; import 'deliveries_page.dart';
import 'settings_page.dart'; import 'settings_page.dart';
class RoutesPage extends ConsumerWidget { class RoutesPage extends ConsumerStatefulWidget {
const RoutesPage({super.key}); const RoutesPage({super.key});
@override
ConsumerState<RoutesPage> createState() => _RoutesPageState();
}
class _RoutesPageState extends ConsumerState<RoutesPage> {
late LocationPermissionService _permissionService;
@override
void initState() {
super.initState();
_permissionService = LocationPermissionService();
_requestLocationPermissionOnce();
}
Future<void> _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) { void _navigateToDeliveries(BuildContext context, DeliveryRoute route) {
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( MaterialPageRoute(