Merge pull request #146 from r4khul/feat/location-permission

Extend permission denied handling functionality to location toggle tracking in main screen
This commit is contained in:
Anton Tananaev 2026-02-15 06:28:20 -08:00 committed by GitHub
commit 1eb191bea4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,3 +1,4 @@
import 'package:app_settings/app_settings.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:traccar_client/main.dart';
@ -105,7 +106,24 @@ class _MainScreenState extends State<MainScreen> {
_checkBatteryOptimizations(context);
}
} on PlatformException catch (error) {
messengerKey.currentState?.showSnackBar(SnackBar(content: Text(error.message ?? error.code)));
final providerState = await bg.BackgroundGeolocation.providerState;
final isPermissionError = providerState.status == bg.ProviderChangeEvent.AUTHORIZATION_STATUS_DENIED ||
providerState.status == bg.ProviderChangeEvent.AUTHORIZATION_STATUS_RESTRICTED;
if (!mounted) return;
messengerKey.currentState?.showSnackBar(
SnackBar(
content: Text(error.message ?? error.code),
duration: const Duration(seconds: 4),
action: isPermissionError
? SnackBarAction(
label: AppLocalizations.of(context)!.settingsTitle,
onPressed: () => AppSettings.openAppSettings(
type: AppSettingsType.settings,
),
)
: null,
),
);
}
} else {
FirebaseCrashlytics.instance.log('tracking_toggle_stop');