Skip to content

Commit 211658c

Browse files
committed
final
1 parent 4646dc0 commit 211658c

5 files changed

Lines changed: 473 additions & 323 deletions

File tree

lib/screens/add_task_page.dart

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class _AddTaskPageState extends State<AddTaskPage> {
1616
final _formKey = GlobalKey<FormState>();
1717
String _title = '';
1818
DateTime _dueDate = DateTime.now();
19+
TimeOfDay _dueTime = TimeOfDay.now();
1920
Priority _priority = Priority.medium;
2021

2122
Future<void> _selectDate(BuildContext context) async {
@@ -32,13 +33,32 @@ class _AddTaskPageState extends State<AddTaskPage> {
3233
}
3334
}
3435

36+
Future<void> _selectTime(BuildContext context) async {
37+
final TimeOfDay? picked = await showTimePicker(
38+
context: context,
39+
initialTime: _dueTime,
40+
);
41+
if (picked != null && picked != _dueTime) {
42+
setState(() {
43+
_dueTime = picked;
44+
});
45+
}
46+
}
47+
3548
void _submit() {
3649
if (_formKey.currentState!.validate()) {
3750
_formKey.currentState!.save();
51+
final newDueDate = DateTime(
52+
_dueDate.year,
53+
_dueDate.month,
54+
_dueDate.day,
55+
_dueTime.hour,
56+
_dueTime.minute,
57+
);
3858
final newTask = Task(
3959
id: DateTime.now().toString(),
4060
title: _title,
41-
dueDate: _dueDate,
61+
dueDate: newDueDate,
4262
priority: _priority,
4363
);
4464
Provider.of<TaskProvider>(context, listen: false).addTask(newTask);
@@ -85,6 +105,19 @@ class _AddTaskPageState extends State<AddTaskPage> {
85105
),
86106
],
87107
),
108+
Row(
109+
children: [
110+
Expanded(
111+
child: Text(
112+
'Due Time: ${_dueTime.format(context)}',
113+
),
114+
),
115+
TextButton(
116+
onPressed: () => _selectTime(context),
117+
child: const Text('Select Time'),
118+
),
119+
],
120+
),
88121
const SizedBox(height: 16),
89122
DropdownButtonFormField<Priority>(
90123
initialValue: _priority,

lib/screens/edit_task_page.dart

Lines changed: 74 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,67 @@ class _EditTaskPageState extends State<EditTaskPage> {
1818
final _formKey = GlobalKey<FormState>();
1919
late String _title;
2020
late DateTime _dueDate;
21+
late TimeOfDay _dueTime;
2122
late Priority _priority;
2223

2324
@override
2425
void initState() {
2526
super.initState();
2627
_title = widget.task.title;
2728
_dueDate = widget.task.dueDate;
29+
_dueTime = TimeOfDay.fromDateTime(widget.task.dueDate);
2830
_priority = widget.task.priority;
2931
}
3032

33+
Future<void> _selectDate(BuildContext context) async {
34+
final DateTime? picked = await showDatePicker(
35+
context: context,
36+
initialDate: _dueDate,
37+
firstDate: DateTime(2000),
38+
lastDate: DateTime(2101),
39+
);
40+
if (picked != null && picked != _dueDate) {
41+
setState(() {
42+
_dueDate = picked;
43+
});
44+
}
45+
}
46+
47+
Future<void> _selectTime(BuildContext context) async {
48+
final TimeOfDay? picked = await showTimePicker(
49+
context: context,
50+
initialTime: _dueTime,
51+
);
52+
if (picked != null && picked != _dueTime) {
53+
setState(() {
54+
_dueTime = picked;
55+
});
56+
}
57+
}
58+
59+
void _submit() {
60+
if (_formKey.currentState!.validate()) {
61+
_formKey.currentState!.save();
62+
final newDueDate = DateTime(
63+
_dueDate.year,
64+
_dueDate.month,
65+
_dueDate.day,
66+
_dueTime.hour,
67+
_dueTime.minute,
68+
);
69+
final updatedTask = Task(
70+
id: widget.task.id,
71+
title: _title,
72+
dueDate: newDueDate,
73+
priority: _priority,
74+
isCompleted: widget.task.isCompleted,
75+
);
76+
Provider.of<TaskProvider>(context, listen: false).updateTask(updatedTask);
77+
78+
Navigator.of(context).popUntil((route) => route.isFirst);
79+
}
80+
}
81+
3182
@override
3283
Widget build(BuildContext context) {
3384
return Scaffold(
@@ -38,7 +89,7 @@ class _EditTaskPageState extends State<EditTaskPage> {
3889
padding: const EdgeInsets.all(16.0),
3990
child: Form(
4091
key: _formKey,
41-
child: Column(
92+
child: ListView(
4293
children: [
4394
TextFormField(
4495
initialValue: _title,
@@ -53,7 +104,7 @@ class _EditTaskPageState extends State<EditTaskPage> {
53104
_title = value!;
54105
},
55106
),
56-
const SizedBox(height: 16.0),
107+
const SizedBox(height: 16),
57108
Row(
58109
children: [
59110
Expanded(
@@ -62,24 +113,25 @@ class _EditTaskPageState extends State<EditTaskPage> {
62113
),
63114
),
64115
TextButton(
65-
onPressed: () async {
66-
final pickedDate = await showDatePicker(
67-
context: context,
68-
initialDate: _dueDate,
69-
firstDate: DateTime.now(),
70-
lastDate: DateTime(2101),
71-
);
72-
if (pickedDate != null) {
73-
setState(() {
74-
_dueDate = pickedDate;
75-
});
76-
}
77-
},
116+
onPressed: () => _selectDate(context),
78117
child: const Text('Select Date'),
79118
),
80119
],
81120
),
82-
const SizedBox(height: 16.0),
121+
Row(
122+
children: [
123+
Expanded(
124+
child: Text(
125+
'Due Time: ${_dueTime.format(context)}',
126+
),
127+
),
128+
TextButton(
129+
onPressed: () => _selectTime(context),
130+
child: const Text('Select Time'),
131+
),
132+
],
133+
),
134+
const SizedBox(height: 16),
83135
DropdownButtonFormField<Priority>(
84136
initialValue: _priority,
85137
decoration: const InputDecoration(labelText: 'Priority'),
@@ -90,31 +142,15 @@ class _EditTaskPageState extends State<EditTaskPage> {
90142
);
91143
}).toList(),
92144
onChanged: (value) {
93-
if (value != null) {
94-
setState(() {
95-
_priority = value;
96-
});
97-
}
145+
setState(() {
146+
_priority = value!;
147+
});
98148
},
99149
),
100-
const SizedBox(height: 32.0),
150+
const SizedBox(height: 32),
101151
ElevatedButton(
102-
onPressed: () {
103-
if (_formKey.currentState!.validate()) {
104-
_formKey.currentState!.save();
105-
final updatedTask = Task(
106-
id: widget.task.id,
107-
title: _title,
108-
dueDate: _dueDate,
109-
priority: _priority,
110-
isCompleted: widget.task.isCompleted,
111-
);
112-
Provider.of<TaskProvider>(context, listen: false)
113-
.updateTask(updatedTask);
114-
Navigator.of(context).pop();
115-
}
116-
},
117-
child: const Text('Save Task'),
152+
onPressed: _submit,
153+
child: const Text('Update Task'),
118154
),
119155
],
120156
),

0 commit comments

Comments
 (0)