diff --git a/lib/main_screen.dart b/lib/main_screen.dart index 2d9bbcf..08e0155 100644 --- a/lib/main_screen.dart +++ b/lib/main_screen.dart @@ -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 { _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');