Home > OS >  Flutter Date Picker function for multiple fields
Flutter Date Picker function for multiple fields

Time:01-19

How to use the below code for single function multiple textformfield controller to pass the date value. Or I have to write multiple function for all controllers in the form fields for date picker ?

 ....                      
                         TextFormField(
                                  decoration: inputDecoration(
                                      'Enter Start Date',
                                      'Start Date',
                                      datestartCtrl),
                                  controller: datestartCtrl,
                                  onTap: () => _selectDate(context),
                                ),
                                SizedBox(
                                  height: 10,
                                ),
                                TextFormField(
                                  decoration: inputDecoration(
                                      'Enter Finish Date',
                                      'Date Finished',
                                      datefinishCtrl),
                                  controller: datefinishCtrl,
                                  onTap: () => _selectDate(context),
                                ),
    .....
    
    Future<Null> _selectDate(BuildContext context) async {
      var selectedDate = DateTime.now();
        DateFormat formatter = DateFormat('dd MMMM yyyy');//specifies day/month/year format
        final DateTime? picked = await showDatePicker(
            context: context,
            initialDate: selectedDate,
            firstDate: DateTime(1901, 1),
            lastDate: DateTime.now());
        if (picked != null && picked != selectedDate)
          setState(() {
            selectedDate = picked;
            datestartCtrl.value = TextEditingValue(text: formatter.format(picked));//Use formatter to format selected date and assign to text field
          });
      }

CodePudding user response:

Textfield code :

TextFormField(
                                  decoration: inputDecoration(
                                      'Enter Start Date',
                                      'Start Date',
                                      datestartCtrl),
                                  controller: datestartCtrl,
                                  onTap: () => _selectDate(context,datestartCtrl),
                                ),
                                SizedBox(
                                  height: 10,
                                ),
                                TextFormField(
                                  decoration: inputDecoration(
                                      'Enter Finish Date',
                                      'Date Finished',
                                      datefinishCtrl),
                                  controller: datefinishCtrl,
                                  onTap: () => _selectDate(context,datefinishCtrl),
                                ),

Method For Datepicker

 Future<Null> _selectDate(BuildContext context, TextEditingController controller) async {
          var selectedDate = DateTime.now();
            DateFormat formatter = DateFormat('dd MMMM yyyy');
            final DateTime? picked = await showDatePicker(
                context: context,
                initialDate: selectedDate,
                firstDate: DateTime(1901, 1),
                lastDate: DateTime.now());
            if (picked != null && picked != selectedDate)
              setState(() {
                selectedDate = picked;
                controller.text = picked.tostring();
              });
          }

Hope you got the solution!

CodePudding user response:

TextFormField(
                                      decoration: inputDecoration(
                                          'Enter Start Date',
                                          'Start Date',
                                          datestartCtrl),
                                      controller: datestartCtrl,
                                      onTap: () => _selectDate(context,datestartCtrl),
                                    ),
                                    SizedBox(
                                      height: 10,
                                    ),
                                    TextFormField(
                                      decoration: inputDecoration(
                                          'Enter Finish Date',
                                          'Date Finished',
                                          datefinishCtrl),
                                      controller: datefinishCtrl,
                                      onTap: () => _selectDate(context,datefinishCtrl),
                                    ),

Method for datepicker

 Future<Null> _selectDate(BuildContext context, TextEditingController controller) async {
          var selectedDate = DateTime.now();
            DateFormat formatter = DateFormat('dd MMMM yyyy');
            final DateTime? picked = await showDatePicker(
                context: context,
                initialDate: selectedDate,
                firstDate: DateTime(1901, 1),
                lastDate: DateTime.now());
            if (picked != null && picked != selectedDate)
              setState(() {
                controller.value = TextEditingValue(text: formatter.format(picked));
              });
          }
  •  Tags:  
  • Related