Fixed Progress Editor Bug

Signed-off-by: Andreas Fahrecker <AndreasFahrecker@gmail.com>
This commit is contained in:
Andreas Fahrecker
2021-02-13 00:54:16 +01:00
parent 9ee29a7c7c
commit f592e7b66b
5 changed files with 51 additions and 42 deletions

View File

@ -3,7 +3,7 @@ import 'package:time_progress_tracker/models/time_progress.dart';
import 'package:time_progress_tracker/widgets/app_yes_no_dialog_widget.dart';
class DetailScreenFloatingActionButtons extends StatelessWidget {
final bool editMode;
final bool editMode, isEditedProgressValid;
final TimeProgress originalProgress, editedProgress;
final void Function() onEditProgress,
onSaveEditedProgress,
@ -14,6 +14,7 @@ class DetailScreenFloatingActionButtons extends StatelessWidget {
@required this.editMode,
@required this.originalProgress,
@required this.editedProgress,
@required this.isEditedProgressValid,
@required this.onEditProgress,
@required this.onSaveEditedProgress,
@required this.onCancelEditProgress,
@ -63,7 +64,7 @@ class DetailScreenFloatingActionButtons extends StatelessWidget {
child: editMode ? Icon(Icons.save) : Icon(Icons.edit),
backgroundColor: editMode ? Colors.green : appTheme.accentColor,
onPressed: editMode
? TimeProgress.isValid(editedProgress)
? isEditedProgressValid
? onSaveEditedProgress
: null
: onEditProgress,

View File

@ -4,7 +4,7 @@ import 'package:time_progress_tracker/widgets/date_picker_btn.dart';
class ProgressEditorWidget extends StatefulWidget {
final TimeProgress timeProgress;
final Function(TimeProgress) onTimeProgressChanged;
final Function(TimeProgress, bool) onTimeProgressChanged;
ProgressEditorWidget({
@required this.timeProgress,
@ -22,42 +22,35 @@ class _ProgressEditorWidgetState extends State<ProgressEditorWidget> {
bool _validName = true, _validDate = true;
void _onNameChanged() {
if (TimeProgress.isNameValid(_nameTextController.text)) {
widget.onTimeProgressChanged(
widget.timeProgress.copyWith(name: _nameTextController.text));
setState(() {
_validName = true;
});
} else
setState(() {
_validName = false;
});
TimeProgress newProgress =
widget.timeProgress.copyWith(name: _nameTextController.text);
widget.onTimeProgressChanged(
newProgress, TimeProgress.isValid(newProgress));
setState(() {
_validName = TimeProgress.isNameValid(newProgress.name);
});
}
void _onStartDateChanged(DateTime newStartDate) {
if (TimeProgress.areTimesValid(newStartDate, widget.timeProgress.endTime)) {
widget.onTimeProgressChanged(
widget.timeProgress.copyWith(startTime: newStartDate));
setState(() {
_validDate = true;
});
} else
setState(() {
_validDate = false;
});
TimeProgress newProgress =
widget.timeProgress.copyWith(startTime: newStartDate);
widget.onTimeProgressChanged(
newProgress, TimeProgress.isValid(newProgress));
setState(() {
_validDate =
TimeProgress.areTimesValid(newStartDate, newProgress.endTime);
});
}
void _onEndDateChanged(DateTime newEndDate) {
if (TimeProgress.areTimesValid(widget.timeProgress.startTime, newEndDate)) {
widget.onTimeProgressChanged(
widget.timeProgress.copyWith(endTime: newEndDate));
setState(() {
_validDate = true;
});
} else
setState(() {
_validDate = false;
});
TimeProgress newProgress =
widget.timeProgress.copyWith(endTime: newEndDate);
widget.onTimeProgressChanged(
newProgress, TimeProgress.isValid(newProgress));
setState(() {
_validDate =
TimeProgress.areTimesValid(newProgress.startTime, newEndDate);
});
}
@override