Added timetable custom event dialog
This commit is contained in:
parent
7dee9f4f8a
commit
be17c9a5ab
141
lib/view/pages/timetable/addCustomTimetableEventDialog.dart
Normal file
141
lib/view/pages/timetable/addCustomTimetableEventDialog.dart
Normal 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'),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -3,6 +3,7 @@ import 'dart:async';
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:marianum_mobile/extensions/dateTime.dart';
|
import 'package:marianum_mobile/extensions/dateTime.dart';
|
||||||
|
import 'package:marianum_mobile/view/pages/timetable/addCustomTimetableEventDialog.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:syncfusion_flutter_calendar/calendar.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));
|
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>(
|
body: Consumer<TimetableProps>(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user