[Solved] How to copy data from one TextFormField to Another TextFormField by using CheckBox in flutter

Question

Asked by Toujo on January 03, 2022 (source).

I have two Textform field Billing Address & Shipping Address when user enter Billing address in textform field, I want to copy those data to my Shipping Address field by checkBox. I dont want user to put data again in shipping address field if user Shipping and Billing Address is same.

Here is my class

class Shipping_Address_Page extends StatefulWidget {
  const Shipping_Address_Page({Key? key}) : super(key: key);

  @override
  State<Shipping_Address_Page> createState() => _Shipping_Address_PageState();
}

class _Shipping_Address_PageState extends State<Shipping_Address_Page> {
    bool sameAddress = false;

 //===================================billing controller===============================
  late TextEditingController UserBilling_Name_Controller =TextEditingController(text: UserBillingNAme);
    late TextEditingController UserBilling_Email_Controller =TextEditingController(text: UserBillingEmail);

//===================================shipping===============================
  late TextEditingController UserShipping_NAme_Controller =TextEditingController(text: UserShippingNAme);
  late TextEditingController UserShipping_Email_Controller =TextEditingController(text: UserShippingEmail);

Ui code for the textform field

   Column(
        mainAxisAlignment: MainAxisAlignment.start,
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          FutureBuilder(
              future: PredifinedAddressModel_Api(),
              builder: (BuildContext context, AsyncSnapshot snapshot) {
                if (snapshot.connectionState != ConnectionState.done) {
                  return Center(
                      child:
                          CupertinoActivityIndicator());
                }
                if (snapshot.hasData) {
                  return Column(
                    crossAxisAlignment: CrossAxisAlignment.stretch,
                    children: [

 //=================================Billing address=============================

                      Container(
                          decoration: BoxDecoration(
                              borderRadius: BorderRadius.circular(15),
                              color: Color(0xFFE4D8DC)),
                          child: Padding(
                            padding: EdgeInsets.symmetric(
                                horizontal: getProportionateScreenWidth(20),
                                vertical: getProportionateScreenHeight(30)),
                            child: Column(
                              children: [
                                Container(
                                  decoration: BoxDecoration(
                                    color: Color(0xFFf0f0f0),
                                    borderRadius: BorderRadius.circular(15),
                                  ),
                                  margin: EdgeInsets.all(10),
                                  child: TextFormField(
                                     textCapitalization: TextCapitalization.sentences,
                                    controller: UserBilling_Name_Controller,//===Controller
                                    decoration: InputDecoration(
                                        contentPadding: EdgeInsets.symmetric(
                                            horizontal:
                                                getProportionateScreenWidth(20),
                                            vertical:
                                                getProportionateScreenWidth(
                                                    15)),
                                        border: InputBorder.none,
                                        focusedBorder: InputBorder.none,
                                        labelText: "Name",
                                        enabledBorder: InputBorder.none,
                                        hintText: "Your name",
                                        hintStyle: TextStyle(
                                            color:
                                                Colors.black.withOpacity(0.4)),
                                        prefixIcon:
                                            Icon(Icons.account_circle,size: 13.0)),
                                  ),
                                ),




                                                     
   //===================================Shipping===============================

                      SizedBox(height: getProportionateScreenHeight(20),),
                      Padding(
                          padding: EdgeInsets.only(left: 8.0, bottom: 16),
                          child: Column(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: [
                              SizedBox(
                                height: getProportionateScreenHeight(20),
                              ),
                              Text(
                                "Shipping address",
                                style: TextStyle(
                                    fontSize: getProportionateScreenHeight(30),
                                    color: Colors.black,
                                    fontFamily: 'Gilroy',
                                    fontWeight: FontWeight.w700),
                              ),
                            ],
                          ),
                        ),

                     SizedBox(height: getProportionateScreenHeight(20),),


  

 //=================================check box=====================================
                         Row(
                  children: [
                    Checkbox(
                      value: sameAddress, //false
                      activeColor: Colors.green,
                      onChanged: (value) {
                          setState(() {
                          sameAddress = value!;
                        });
                      },
                    ),
                    Text("Ship to Same address?"),
                  ],
                ),
                         

 //=====================================================================================




                      Container(
                          decoration: BoxDecoration(
                              borderRadius: BorderRadius.circular(15),
                              color: Color(0xFFC8E3D4)),
                          child: Padding(
                            padding: EdgeInsets.symmetric(
                                horizontal: getProportionateScreenWidth(20),
                                vertical: getProportionateScreenHeight(30)),
                            child: Column(
                              children: [
                                Container(
                                  decoration: BoxDecoration(
                                    color: Color(0xFFf0f0f0),
                                    borderRadius: BorderRadius.circular(15),
                                  ),
                                  margin: EdgeInsets.all(10),
                                  child: TextFormField(
                                     textCapitalization: TextCapitalization.sentences,
                                    controller: UserShipping_NAme_Controller,//===Controller
                                    decoration: InputDecoration(
                                        contentPadding: EdgeInsets.symmetric(
                                            horizontal:
                                                getProportionateScreenWidth(20),
                                            vertical:
                                                getProportionateScreenWidth(
                                                    15)),
                                        border: InputBorder.none,
                                        focusedBorder: InputBorder.none,
                                        labelText: "Name",
                                        enabledBorder: InputBorder.none,
                                        hintText: "Your name",
                                        hintStyle: TextStyle(
                                            color:
                                                Colors.black.withOpacity(0.4)),
                                        prefixIcon:
                                            Icon(Icons.account_circle,size: 13.0)),
                                  ),
                                ),

Answer

Question answered by Krunal N (source).

Row(
   children: [
      Checkbox(
         value: sameAddress, //false
         activeColor: Colors.green,
         onChanged: (value) {
            setState(() {
               UserShipping_NAme_Controller.text = UserBilling_Name_Controller.text;
               UserShipping_Email_Controller.text = UserBilling_Email_Controller.text;
            });
         },
      ),
      Text("Ship to Same address?"),
   ],
),

Replace your row which contain checkbox with this code.

Video Answers on YouTube

CHECKBOX DART FLUTTER
SHARE: