import 'package:flutter/foundation.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; class GeofenceNotificationsService { final FlutterLocalNotificationsPlugin _plugin; GeofenceNotificationsService({FlutterLocalNotificationsPlugin? plugin}) : _plugin = plugin ?? FlutterLocalNotificationsPlugin(); Future initialize() async { if (kIsWeb || defaultTargetPlatform != TargetPlatform.android) { return; } const settings = InitializationSettings( android: AndroidInitializationSettings('@mipmap/ic_launcher'), ); await _plugin.initialize(settings); } Future areNotificationsEnabled() async { if (kIsWeb || defaultTargetPlatform != TargetPlatform.android) { return true; } try { final android = _plugin .resolvePlatformSpecificImplementation< AndroidFlutterLocalNotificationsPlugin >(); return await android?.areNotificationsEnabled() ?? true; } catch (_) { return true; } } Future requestNotificationsPermission() async { if (kIsWeb || defaultTargetPlatform != TargetPlatform.android) { return true; } try { final android = _plugin .resolvePlatformSpecificImplementation< AndroidFlutterLocalNotificationsPlugin >(); final granted = await android?.requestNotificationsPermission(); return granted ?? await areNotificationsEnabled(); } catch (_) { return false; } } }