main, add an actual alarm for Android.

This commit is contained in:
me committed 2026-09-28 03:58:04 -07:00
1 parent dad8fff6d2
commit 6030da178c
1 file changed
+24 -1
+24 -1
View File
@@ -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/data/latest_all.dart' as tz;
import 'package:timezone/timezone.dart' as tz; import 'package:timezone/timezone.dart' as tz;
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:alarm/alarm.dart';
import 'dart:convert'; import 'dart:convert';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
tz.initializeTimeZones(); tz.initializeTimeZones();
await Alarm.init();
runApp(const SunsetAlarmApp()); runApp(const SunsetAlarmApp());
} }
@@ -230,6 +232,7 @@ class _HomeScreenState extends State<HomeScreen> {
'Alarm set for ${alarmTime.hour.toString().padLeft(2, '0')}:${alarmTime.minute.toString().padLeft(2, '0')} (app must stay open)', 'Alarm set for ${alarmTime.hour.toString().padLeft(2, '0')}:${alarmTime.minute.toString().padLeft(2, '0')} (app must stay open)',
); );
} else if (Platform.isAndroid) { } else if (Platform.isAndroid) {
/*** Notifcation Method - Works ***/
// Android: use zonedSchedule (works in background) // Android: use zonedSchedule (works in background)
final tzAlarm = tz.TZDateTime.from(alarmTime, tz.local); final tzAlarm = tz.TZDateTime.from(alarmTime, tz.local);
const androidDetails = AndroidNotificationDetails( const androidDetails = AndroidNotificationDetails(
@@ -256,7 +259,27 @@ class _HomeScreenState extends State<HomeScreen> {
debugPrint('DEBUG: Current time: ${DateTime.now().toUtc().toString()}'); debugPrint('DEBUG: Current time: ${DateTime.now().toUtc().toString()}');
debugPrint('DEBUG: ${_notifications.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 { } else {
_showSnack('Platform not detected, unsure how to show alarm.'); _showSnack('Platform not detected, unsure how to show alarm.');
} }