From c5bcd9689a53bf8bf5cda0fd1a582fc775fe16a6 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sat, 10 May 2025 11:26:42 -0700 Subject: [PATCH] Implement quick actions --- lib/quick_actions.dart | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/quick_actions.dart b/lib/quick_actions.dart index 21938b9..b17760c 100644 --- a/lib/quick_actions.dart +++ b/lib/quick_actions.dart @@ -3,6 +3,7 @@ import 'dart:developer' as developer; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:quick_actions/quick_actions.dart'; +import 'package:flutter_background_geolocation/flutter_background_geolocation.dart' as bg; class QuickActionsInitializer extends StatefulWidget { const QuickActionsInitializer({super.key}); @@ -17,15 +18,20 @@ class _QuickActionsInitializerState extends State { @override void initState() { super.initState(); - quickActions.initialize((shortcutType) { + quickActions.initialize((shortcutType) async { developer.log('action $shortcutType'); switch (shortcutType) { case 'start': - break; + bg.BackgroundGeolocation.start(); case 'stop': - break; + bg.BackgroundGeolocation.stop(); case 'sos': - break; + try { + await bg.BackgroundGeolocation.getCurrentPosition(samples: 1, extras: {'sos': true}); + await bg.BackgroundGeolocation.sync(); + } catch (error) { + developer.log('Failed to send alert', error: error); + } } }); } @@ -35,9 +41,9 @@ class _QuickActionsInitializerState extends State { super.didChangeDependencies(); final localizations = AppLocalizations.of(context)!; quickActions.setShortcutItems([ - ShortcutItem(type: 'sos', localizedTitle: localizations.sosAction, icon: 'exclamation'), - ShortcutItem(type: 'stop', localizedTitle: localizations.stopAction, icon: 'stop'), ShortcutItem(type: 'start', localizedTitle: localizations.startAction, icon: 'play'), + ShortcutItem(type: 'stop', localizedTitle: localizations.stopAction, icon: 'stop'), + ShortcutItem(type: 'sos', localizedTitle: localizations.sosAction, icon: 'exclamation'), ]); }