首页 > 解决方案 > 将代码分解为方法参数(Dart + Flutter + GetX)

问题描述

如何将“myEditMyProfileController.initFullName”和“myEditMyProfileController.tempFullName”分解为控制器是 GetxController 和 initFullName/tempFullName 是 String ...的方法参数?(我使用 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,
                 ),
              ),
           ),
        ),
     );
  }

标签: flutterdartflutter-getx

解决方案


设法解决了问题...

GetBuilder 需要包含要正确更新的方法调用。

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,
      ),
   );
}

推荐阅读