handled saving and restoring fixed time alarms
This commit is contained in:
@@ -2,9 +2,13 @@ import 'package:flutter/material.dart';
|
||||
|
||||
import '../app_theme.dart';
|
||||
import '../model/alarm/alarm.dart';
|
||||
import '../model/alarm/fixed_time_alarm.dart';
|
||||
import '../model/alarm/location_alarm.dart';
|
||||
import '../model/alarm/relative_time_alarm.dart';
|
||||
import '../model/requests/create_alarm_request.dart';
|
||||
import '../model/requests/create_fixed_time_alarm_request.dart';
|
||||
import '../model/requests/create_location_alarm_request.dart';
|
||||
import '../model/requests/create_relative_time_alarm_request.dart';
|
||||
import '../model/requests/create_task_request.dart';
|
||||
import '../model/extensions/controller_context.dart';
|
||||
import '../model/task.dart';
|
||||
@@ -37,7 +41,7 @@ class _TaskEditPageState extends State<TaskEditPage> {
|
||||
final formKey = GlobalKey<FormState>(debugLabel: 'taskEditFormKey');
|
||||
bool didFormChange = false;
|
||||
bool isDueTimeEnabled = false;
|
||||
final List<CreateAlarmRequest> alarms = [];
|
||||
final List<CreateAlarmRequest> alarmRequests = [];
|
||||
|
||||
@override
|
||||
void didChangeDependencies() {
|
||||
@@ -56,6 +60,18 @@ class _TaskEditPageState extends State<TaskEditPage> {
|
||||
isDueTimeEnabled = true;
|
||||
}
|
||||
isInitialized = true;
|
||||
alarmRequests.addAll(
|
||||
task!.alarms.map((alarm) {
|
||||
if (alarm is FixedTimeAlarm) {
|
||||
return CreateFixedTimeAlarmRequest.fromAlarm(alarm);
|
||||
} else if (alarm is RelativeTimeAlarm) {
|
||||
return CreateRelativeTimeAlarmRequest.fromAlarm(alarm);
|
||||
} else if (alarm is LocationAlarm) {
|
||||
return CreateLocationAlarmRequest.fromAlarm(alarm);
|
||||
}
|
||||
throw TypeError();
|
||||
}),
|
||||
);
|
||||
pageTitle = task!.title;
|
||||
}
|
||||
}
|
||||
@@ -151,12 +167,12 @@ class _TaskEditPageState extends State<TaskEditPage> {
|
||||
label: Text('Location'),
|
||||
icon: Icon(Icons.location_on),
|
||||
),
|
||||
for (final (index, alarm) in alarms.indexed)
|
||||
for (final (index, alarmRequest) in alarmRequests.indexed)
|
||||
AlarmForm(
|
||||
request: alarm,
|
||||
request: alarmRequest,
|
||||
onChanged: (updated) {
|
||||
setState(() {
|
||||
alarms[index] = updated;
|
||||
alarmRequests[index] = updated;
|
||||
});
|
||||
},
|
||||
),
|
||||
@@ -187,7 +203,18 @@ class _TaskEditPageState extends State<TaskEditPage> {
|
||||
category: categoryController.text,
|
||||
subtasks: [],
|
||||
url: urlController.text,
|
||||
alarms: [],
|
||||
alarms: alarmRequests.map<Alarm>((e) {
|
||||
if (e is CreateFixedTimeAlarmRequest) {
|
||||
return e.toAlarm(generateId());
|
||||
}
|
||||
if (e is CreateRelativeTimeAlarmRequest) {
|
||||
return e.toAlarm(generateId());
|
||||
}
|
||||
if (e is LocationAlarm) {
|
||||
return e.toAlarm(generateId());
|
||||
}
|
||||
throw TypeError();
|
||||
}).toList(),
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -223,12 +250,12 @@ class _TaskEditPageState extends State<TaskEditPage> {
|
||||
void onAddAlarmPressed(AlarmType alarmType) {
|
||||
switch (alarmType) {
|
||||
case AlarmType.location:
|
||||
alarms.add(CreateLocationAlarmRequest());
|
||||
alarmRequests.add(CreateLocationAlarmRequest());
|
||||
case AlarmType.timeFixed:
|
||||
alarms.add(CreateFixedTimeAlarmRequest());
|
||||
alarmRequests.add(CreateFixedTimeAlarmRequest());
|
||||
|
||||
case AlarmType.timeRelative:
|
||||
alarms.add(CreateFixedTimeAlarmRequest());
|
||||
alarmRequests.add(CreateFixedTimeAlarmRequest());
|
||||
}
|
||||
setState(() {});
|
||||
}
|
||||
|
||||
@@ -26,11 +26,19 @@ class _FixedTimeAlarmFormState extends State<FixedTimeAlarmForm> {
|
||||
bool isDueTimeEnabled = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
void didChangeDependencies() {
|
||||
if (widget.request.triggerAt != null) {
|
||||
dueDateController.text = getIsoDateString(widget.request.triggerAt!);
|
||||
dueTimeController.text = TimeOfDay.fromDateTime(
|
||||
widget.request.triggerAt!,
|
||||
).format(context);
|
||||
isDueTimeEnabled = true;
|
||||
}
|
||||
|
||||
dueDateController.addListener(onDueDateChanged);
|
||||
dueTimeController.addListener(onDueTimeChanged);
|
||||
|
||||
super.initState();
|
||||
super.didChangeDependencies();
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
Reference in New Issue
Block a user