I'm going to make a form in which the user can specify a fill time period (first date and second date, in the code). I use .... My problem is that if I select a date in one field, then it is automatically substituted in the second. How can I fix this error? If my approach to solving a given problem is not optimal, I can listen to advice.
.....
TextField(
controller: dateinput, //editing controller of this TextField
decoration: const InputDecoration(
icon: Icon(Icons.calendar_today), //icon of text field
labelText: "Enter first Date" //label text of field
),
readOnly: true, //set it true, so that user will not able to edit text
onTap: () async {
DateTime? pickedDate = await showDatePicker(
context: context, initialDate: DateTime.now(),
firstDate: DateTime(2000), //DateTime.now() - not to allow to choose before today.
lastDate: DateTime(2101)
);
if(pickedDate != null ){
print(pickedDate); //pickedDate output format => 2021-03-10 00:00:00.000
String formattedDate = DateFormat('yyyy-MM-dd').format(pickedDate);
print(formattedDate); //formatted date output using intl package => 2021-03-16
//you can implement different kind of Date Format here according to your requirement
setState(() {
dateinput.text = formattedDate; //set output date to TextField value.
});
}else{
print("Date is not selected");
}
},
),
TextField(
controller: dateinput, //editing controller of this TextField
decoration: InputDecoration(
icon: Icon(Icons.calendar_today), //icon of text field
labelText: "Enter second Date" //label text of field
),
readOnly: true, //set it true, so that user will not able to edit text
onTap: () async {
DateTime? pickedDate = await showDatePicker(
context: context, initialDate: DateTime.now(),
firstDate: DateTime(2000), //DateTime.now() - not to allow to choose before today.
lastDate: DateTime(2101)
);
if(pickedDate != null ){
print(pickedDate); //pickedDate output format => 2021-03-10 00:00:00.000
String formattedDate = DateFormat('yyyy-MM-dd').format(pickedDate);
print(formattedDate); //formatted date output using intl package => 2021-03-16
//you can implement different kind of Date Format here according to your requirement
setState(() {
dateinput.text = formattedDate; //set output date to TextField value.
});
}else{
print("Date is not selected");
}
},
),
......
CodePudding user response:
You're using the same controller for each TextField....use unique controllers.