From e309a7729a142fd2254681d7769b446cbfdd4cc0 Mon Sep 17 00:00:00 2001 From: r4khul Date: Sat, 14 Feb 2026 22:57:57 +0530 Subject: [PATCH] Check permission denial using background geolocation provider state instead of platform exception based string matching --- lib/main_screen.dart | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/main_screen.dart b/lib/main_screen.dart index c158c67..a55cb17 100644 --- a/lib/main_screen.dart +++ b/lib/main_screen.dart @@ -74,11 +74,10 @@ class _MainScreenState extends State { } } - bool isPermissionDeniedError(PlatformException error) { - final errorDetails = '${error.code} ${error.message ?? ''}'.toLowerCase(); - return errorDetails.contains('denied') || - errorDetails.contains('permission_denied') || - errorDetails.contains('access_denied'); + Future _isPermissionDenied() async { + final providerState = await bg.BackgroundGeolocation.providerState; + return providerState.status == bg.ProviderChangeEvent.AUTHORIZATION_STATUS_DENIED || + providerState.status == bg.ProviderChangeEvent.AUTHORIZATION_STATUS_RESTRICTED; } Widget _buildTrackingCard() { @@ -113,7 +112,7 @@ class _MainScreenState extends State { _checkBatteryOptimizations(context); } } on PlatformException catch (error) { - final isPermissionError = isPermissionDeniedError(error); + final isPermissionError = await _isPermissionDenied(); if (!mounted) return; messengerKey.currentState?.showSnackBar( SnackBar(