Added timetable custom event dialog

This commit is contained in:
Elias Müller 2024-02-09 16:39:04 +01:00
parent 7dee9f4f8a
commit be17c9a5ab
2 changed files with 148 additions and 0 deletions

View File

@ -0,0 +1,141 @@
import 'package:flutter/material.dart';
class AddCustomTimetableEventDialog extends StatefulWidget {
const AddCustomTimetableEventDialog({super.key});
@override
State<AddCustomTimetableEventDialog> createState() => _AddCustomTimetableEventDialogState();
}
class _AddCustomTimetableEventDialogState extends State<AddCustomTimetableEventDialog> {
DateTime _selectedDate = DateTime.now();
TimeOfDay _selectedStartTime = TimeOfDay.now();
TimeOfDay _selectedEndTime = TimeOfDay.now();
final TextEditingController _eventNameController = TextEditingController();
bool _isRecurring = false;
String _recurringFrequency = 'Wöchentlich';
@override
Widget build(BuildContext context) {
return AlertDialog(
title: const Text('Termin hinzufügen'),
content: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
ListTile(
title: const Text('Startdatum:'),
subtitle: Text('${_selectedDate.day}/${_selectedDate.month}/${_selectedDate.year}'),
onTap: () async {
final DateTime? pickedDate = await showDatePicker(
context: context,
initialDate: _selectedDate,
firstDate: DateTime.now(),
lastDate: DateTime(2101),
);
if (pickedDate != null && pickedDate != _selectedDate) {
setState(() {
_selectedDate = pickedDate;
});
}
},
),
ListTile(
title: const Text('Startzeit:'),
subtitle: Text('${_selectedStartTime.hour}:${_selectedStartTime.minute}'),
onTap: () async {
final TimeOfDay? pickedTime = await showTimePicker(
context: context,
initialTime: _selectedStartTime,
);
if (pickedTime != null && pickedTime != _selectedStartTime) {
setState(() {
_selectedStartTime = pickedTime;
});
}
},
),
ListTile(
title: const Text('Endzeit:'),
subtitle: Text('${_selectedEndTime.hour}:${_selectedEndTime.minute}'),
onTap: () async {
final TimeOfDay? pickedTime = await showTimePicker(
context: context,
initialTime: _selectedEndTime,
);
if (pickedTime != null && pickedTime != _selectedEndTime) {
setState(() {
_selectedEndTime = pickedTime;
});
}
},
),
TextField(
controller: _eventNameController,
decoration: const InputDecoration(labelText: 'Terminname'),
),
CheckboxListTile(
title: const Text('Wiederholend'),
value: _isRecurring,
onChanged: (bool? value) {
setState(() {
_isRecurring = value!;
});
},
),
if (_isRecurring) ...[
DropdownButtonFormField<String>(
value: _recurringFrequency,
items: ['Wöchentlich', 'Täglich', 'Monatlich'].map((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
onChanged: (String? value) {
setState(() {
_recurringFrequency = value ?? "";
});
},
),
// Hier könntest du weitere Felder für die Wiederholungseigenschaften hinzufügen
],
],
),
),
actions: <Widget>[
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: const Text('Abbrechen'),
),
TextButton(
onPressed: () {
// Hier kannst du die Eingaben verwenden
String startDate = '${_selectedDate.day}/${_selectedDate.month}/${_selectedDate.year}';
String startTime = '${_selectedStartTime.hour}:${_selectedStartTime.minute}';
String endTime = '${_selectedEndTime.hour}:${_selectedEndTime.minute}';
String eventName = _eventNameController.text;
bool isRecurring = _isRecurring;
String recurringFrequency = _recurringFrequency;
// Hier kannst du die Daten speichern oder weiterverarbeiten
print('Startdatum: $startDate');
print('Startzeit: $startTime');
print('Endzeit: $endTime');
print('Terminname: $eventName');
print('Wiederholend: $isRecurring');
if (_isRecurring) {
print('Wiederholungs-Frequenz: $recurringFrequency');
}
// Hier könntest du die Termindaten weiterverarbeiten, z.B. speichern und den Dialog schließen
Navigator.of(context).pop();
},
child: const Text('Hinzufügen'),
),
],
);
}
}

View File

@ -3,6 +3,7 @@ import 'dart:async';
import 'package:flutter/material.dart';
import 'package:marianum_mobile/extensions/dateTime.dart';
import 'package:marianum_mobile/view/pages/timetable/addCustomTimetableEventDialog.dart';
import 'package:provider/provider.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart';
@ -64,6 +65,12 @@ class _TimetableState extends State<Timetable> {
controller.displayDate = DateTime.now().add(const Duration(days: 2));
}
),
IconButton(
icon: const Icon(Icons.add_card_outlined),
onPressed: () {
showDialog(context: context, builder: (context) => const AddCustomTimetableEventDialog());
},
),
],
),
body: Consumer<TimetableProps>(