diff --git a/lib/pages/list/task_edit.dart b/lib/pages/list/task_edit.dart index cd29f0d..8aaac7a 100644 --- a/lib/pages/list/task_edit.dart +++ b/lib/pages/list/task_edit.dart @@ -31,6 +31,18 @@ class _TaskEditPageState extends State { @override Widget build(BuildContext ctx) { + // This builds the initial list of reminder inputs only once. + if (_reminderDates == null) { + _reminderDates = widget.task.reminderDates ?? new List(); + + _reminderDates?.asMap()?.forEach((i, time) => + setState(() => _reminderInputs?.add(VikunjaDateTimePicker( + initialValue: time, + label: 'Reminder', + onSaved: (reminder) => _reminderDates[i] = reminder, + )))); + } + return Scaffold( appBar: AppBar( title: Text('Edit Task'), @@ -146,35 +158,47 @@ class _TaskEditPageState extends State { ), ), Padding( - padding: EdgeInsets.symmetric(vertical: 10.0), + padding: EdgeInsets.only(top: 10), child: Column( - children: _reminderInputs ?? _reminderDatesInput(), + children: _reminderInputs, )), Padding( - padding: EdgeInsets.symmetric(vertical: 10.0), - child: RaisedButton(onPressed: () { - //_reminderInputs = _reminderInputs ?? new List(); - _reminderDates = _reminderDates ?? new List(); - _reminderDates.add( - null); // We add a new entry every time we add a new input, to make sure all inputs have a place where they can put their value. - var currentIndex = _reminderDates.length - 1; + padding: EdgeInsets.only(bottom: 10), + child: GestureDetector( + child: Padding( + padding: EdgeInsets.symmetric(vertical: 10), + child: Row( + children: [ + Padding( + padding: + EdgeInsets.only(right: 15, left: 2), + child: Icon( + Icons.alarm_add, + color: Colors.grey, + )), + Text( + 'Add a reminder', + style: TextStyle( + color: Colors.grey, + fontSize: 16, + ), + ), + ], + ), + ), + onTap: () { + // We add a new entry every time we add a new input, to make sure all inputs have a place where they can put their value. + _reminderDates.add(null); + var currentIndex = _reminderDates.length - 1; - setState(() => - _reminderInputs.add(VikunjaDateTimePicker( - label: 'Reminder', - onSaved: (reminder) => - _reminderDates[currentIndex] = reminder, - ))); - - /*_reminderInputs.add(VikunjaDateTimePicker( - icon: Icon(Icons.add_alarm), - label: 'Add a reminder', - onChanged: (reminder) { - _reminderDates.add(reminder); - //_reminderDatesInput(); - - }));*/ - })), + setState(() => + _reminderInputs.add(VikunjaDateTimePicker( + label: 'Reminder', + onSaved: (reminder) => + _reminderDates[currentIndex] = + reminder, + ))); + })), Builder( builder: (context) => Padding( padding: EdgeInsets.symmetric(vertical: 10.0),