dimanche 21 novembre 2021

How to display a textfield value in other textfield when checkbox is checked in flutter using ListTile

I created a textfield named chargesMax and add a ListTile widget which contains checkbox and two textfield named charges and time. I want when user enter some value on chargesMax textfield and then check any checkbox then charges textfield should contain the value of chargesMax textfield. and then if user modify then charges textfield then only this field will modify not all the textfield of listTile.

here is my code

charges.text = chargesMax.text;

In this above line i'm trying to do what i want but when i check the checkbox of any listTile, value of chargesMax display to charges textfield but all textfield of checkbox modify on check on any checkbox. wherease, i can check the checkbox indiviually.

Full code:


void _onCitySelected(bool selected, cityId) {
    if (selected == true) {
      setState(() {
        charges.text = chargesMax.text;  
        _selectedCities.add(cityId);
        print(_selectedCities);
      });
    } else {
      setState(() {
        _selectedCities.remove(cityId);
      });
    }
  }
Widget build(BuildContext context) {
    return SafeArea(
        child: Container(
        child: Column(
              children: [
                    //chargesMax textfield
                    textformfieldCustomwithouticon(
                    context,
                    TextInputType.number,
                    MediaQuery.of(context).size.width * 0.9,
                    chargesMax, (String value) {
                  setState(() {
                    chargesMax.text = value;

                    chargesMax.selection = TextSelection.fromPosition(
                        TextPosition(offset: chargesMax.text.length));
                  });
                }, (value) {
                  if (value == null || value.isEmpty) {
                    return 'Please enter some text';
                  }
                  return null;
                }, 'Enter delivery charges for maximumn destination',
                    'Delivery charges', 55.0),
                
                   SizedBox(
                                height:
                                    MediaQuery.of(context).size.height * 0.6,
                                child: ListView.builder(
                                    itemCount: books.length,
                                    itemBuilder: (context, index) {
                                      final book = books[index];
                                      if (isLoading) {
                                        return showCircularLoader(context);
                                      } else {
                                        return Padding(
                                          padding: const EdgeInsets.fromLTRB(
                                              0, 10, 0, 0),
                                          child: Column(
                                            children: [
                                              buildCitesList(book),
                                              SizedBox10(),
                                              Divider(),
                                              SizedBox10()
                                            ],
                                          ),
                                        );

                                        //
                                      }
                                    }),
                              ),


Widget buildCitesList(Book book) => ListTile(
        leading: checkboxCustom(context, _selectedCities.contains(book.id),
            (bool? selected) {
          if (selected != null) {
            setState(() {
              _onCitySelected(selected, book.id);
            });
          }
        }),
        title: Text(book.title, style: GoogleFonts.montserrat()),
        subtitle: Padding(
          padding: const EdgeInsets.only(top: 10),
          child: Row(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
             
              //charges textfield
              textformfieldCustomwithouticon1(
                  context,
                  TextInputType.number,
                  MediaQuery.of(context).size.width * 0.3,
                  charges, (String value) {
                setState(() {
                  charges.text = value;
                  charges.selection = TextSelection.fromPosition(
                      TextPosition(offset: charges.text.length));
                });
              }, (value) {
                if (value == null || value.isEmpty) {
                  return 'Please enter some text';
                }
                return null;
              }, 'Charges', 'Charges', 10.0),
              SizedBox(
                width: 10,
              ),
              textformfieldCustomwithouticon1(
                  context,
                  TextInputType.number,
                  MediaQuery.of(context).size.width * 0.3,
                  time, (String value) {
                setState(() {
                  time.text = value;
                  time.selection = TextSelection.fromPosition(
                      TextPosition(offset: time.text.length));
                });
              }, (value) {
                if (value == null || value.isEmpty) {
                  return 'Please enter some text';
                }
                return null;
              }, 'Time', 'Time', 10.0),
              // SizedBox10(),
            ],
          ),
        ),
      );

here is the snap of output

enter image description here

please help how i can do this.




Aucun commentaire:

Enregistrer un commentaire