Search code examples
flutterdartflutter-getx

Break out code to method argument (Dart + Flutter + GetX)


How do I break out "myEditMyProfileController.initFullName" and "myEditMyProfileController.tempFullName" to Method argument the controllers is GetxController and initFullName/tempFullName is String...? (I use GetX + Flutter + Dart)

Container buildEditProfileField(String myLabel, TextEditingController myTextEditingController )
{
   return Container(
      child: Padding(
         padding: const EdgeInsets.only(bottom: 15),
         child: GetBuilder<EditMyProfileController>(
           init: EditMyProfileController(),
           builder: (value) => TextFormField(
              controller: myTextEditingController,
              decoration: InputDecoration(
                 labelText: myLabel,
                 border: OutlineInputBorder(),
                 suffixIcon: myEditMyProfileController.initFullName != myEditMyProfileController.tempFullName ? Icon(Icons.update, color: Colors.teal) : null,
                 ),
              ),
           ),
        ),
     );
  }

Solution

  • Managed to solve the problem...

    GetBuilder needs to enclose the method call to be updated correctly.

    GetBuilder<EditMyProfileController>(
       init: controller,
       builder: (_) {
          return ListView(
             scrollDirection: Axis.vertical,
             shrinkWrap: true,
             children: [
                buildEditProfileField("Full name", controller.myFullNameController, controller.initFullName, controller.tempFullName),
             ],
          );
       }
    ),
    
    TextFormField buildEditProfileField(String myLabel, TextEditingController myTextEditingController, String init, String temp) 
    {
        return TextFormField(
          controller: myTextEditingController,
          decoration: InputDecoration(
            labelText: myLabel,
            border: OutlineInputBorder(),
            suffixIcon: init != temp ? Icon(Icons.update, color: Colors.teal) : null,
          ),
       );
    }