From 6030da178cda9fa889a4119c8a0d61b6eb0fc340 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Mon, 28 Sep 2026 03:58:04 -0700 Subject: [PATCH] main, add an actual alarm for Android. --- lib/main.dart | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 0aa16b9..8e009db 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,12 +8,14 @@ import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:timezone/data/latest_all.dart' as tz; import 'package:timezone/timezone.dart' as tz; import 'package:http/http.dart' as http; +import 'package:alarm/alarm.dart'; import 'dart:convert'; void main() async { WidgetsFlutterBinding.ensureInitialized(); tz.initializeTimeZones(); + await Alarm.init(); runApp(const SunsetAlarmApp()); } @@ -230,6 +232,7 @@ class _HomeScreenState extends State { 'Alarm set for ${alarmTime.hour.toString().padLeft(2, '0')}:${alarmTime.minute.toString().padLeft(2, '0')} (app must stay open)', ); } else if (Platform.isAndroid) { + /*** Notifcation Method - Works ***/ // Android: use zonedSchedule (works in background) final tzAlarm = tz.TZDateTime.from(alarmTime, tz.local); const androidDetails = AndroidNotificationDetails( @@ -256,7 +259,27 @@ class _HomeScreenState extends State { debugPrint('DEBUG: Current time: ${DateTime.now().toUtc().toString()}'); debugPrint('DEBUG: ${_notifications.toString()}'); - debugPrint('alarm: $tzAlarm, now: ${tz.TZDateTime.now(tz.local)}'); + /*** Alarm Method - WIP ***/ + // Schedule: + final settings = AlarmSettings( + id: 42, + dateTime: alarmTime, // your computed sunset time + assetAudioPath: 'assets/alarm.mp3', // put an alarm sound in assets/ + loopAudio: true, // keeps ringing until dismissed + vibrate: true, + androidFullScreenIntent: true, // wakes screen like clock app + volumeSettings: VolumeSettings.fade( + volume: 0.8, + fadeDuration: Duration(seconds: 5), + ), + notificationSettings: const NotificationSettings( + title: 'Sunset Alarm', + body: 'The sun sets now. Time to get ready!', + stopButton: 'Dismiss', + ), + ); + + await Alarm.set(alarmSettings: settings); } else { _showSnack('Platform not detected, unsure how to show alarm.'); }