63 lines
1.6 KiB
Dart
63 lines
1.6 KiB
Dart
import 'package:date_field/date_field.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
import '../../../Services/date_service.dart';
|
|
|
|
/// Ein Feld mit Popup über welches man Datumsfelder auswählen kann
|
|
class DynamicDateTimeField extends StatefulWidget {
|
|
/// Initialisiert eine neue Instanz dieser Klasse
|
|
const DynamicDateTimeField({
|
|
this.initialValue,
|
|
this.mode = DateTimeFieldPickerMode.date,
|
|
this.autofocus = false,
|
|
this.onChanged,
|
|
this.decoration,
|
|
super.key,
|
|
});
|
|
|
|
/// Der Initiale Wert des Input-Feldes
|
|
final DateTime? initialValue;
|
|
|
|
/// Der Modus des Datums-Feldes
|
|
final DateTimeFieldPickerMode mode;
|
|
|
|
/// Ob das Feld automatisch ausgewählt werden soll
|
|
final bool autofocus;
|
|
|
|
/// Die Funktion, die bei Veränderung des Wertes aufgerufen wird
|
|
final Function(DateTime?)? onChanged;
|
|
|
|
/// Die Dekoration, wie das Feld aussehen soll
|
|
final InputDecoration? decoration;
|
|
|
|
@override
|
|
State<StatefulWidget> createState() => _DynamicDateTimeFieldState();
|
|
}
|
|
|
|
class _DynamicDateTimeFieldState extends State<DynamicDateTimeField> {
|
|
DateTime? _value;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_value = widget.initialValue;
|
|
}
|
|
|
|
@override
|
|
Widget build(final BuildContext context) => DateTimeField(
|
|
initialPickerDateTime: widget.initialValue,
|
|
dateFormat: DateService.dateFormat,
|
|
value: _value,
|
|
mode: widget.mode,
|
|
autofocus: widget.autofocus,
|
|
onChanged: (final value) {
|
|
widget.onChanged?.call(value);
|
|
|
|
setState(() {
|
|
_value = value;
|
|
});
|
|
},
|
|
decoration: widget.decoration,
|
|
);
|
|
}
|