使用条件自动填充textformfield控制器

时间:2020-11-04 05:18:46

标签: flutter dart controller textformfield

im试图在我的控制器中使textformfield具有条件。如果该字段为空,则将使用我准备的自动填充文本进行填充。如何在我的textFormField控制器中设置条件? 下面是我的代码。

@override
void initState() {
  super.initState();
  autofill = new TextEditingController(text: 'auto fill text');
  autofill2 = new TextEditingController(text: 'auto fill text2');
}

这是变量。

final _key = new GlobalKey<FormState>();
TextEditingController autofill;
TextEditingController autofill2;
final first_nameController = TextEditingController();
final last_nameController = TextEditingController();

这是验证器,用于检查该字段是否为空,以便errorText出来。

check() {
final form = _key.currentState;
if (form.validate()) {
  form.save();
  field();
}
}

这是我的API连接器,用于保存文本数据形式的文本字段。

field() async {
String auto= autofill2.text;
String auto2= autofill.text;
String first_name = first_nameController.text;
String last_name = last_nameController.text;
// API URL
final response = await http.post(
  config.baseurl + "autofilltextformfield",
  body: {
    'first_name'.isEmpty ? first_name : auto,
    'last_name'.isEmpty ? last_name : auto2,
  },
);
if (response.statusCode == 200) {
  setState(
    () {
      visible = false;
    },
  );
}
showDialog(
  context: context,
  builder: (BuildContext context) {
    return AlertDialog(
      title: new Text(response.body),
      actions: <Widget>[
        FlatButton(
          child: new Text("OK"),
          onPressed: () {
            Navigator.of(context).pop();
          },
        ),
      ],
    );
  },
);
}

这是字段。

Form(
        key: _key,
child: TextFormField(
     validator: (e) {
         if (e.isEmpty) {
              return "please fill text";
         }
     },
     onSaved: (e) => first_nameController.text = e,
         style: TextStyle(
              color: Colors.black,
         ),
     controller: first_nameController,
          decoration: InputDecoration(
              hintText: "text here",
                  hintStyle: _txtCustomSub,
                  enabledBorder: new UnderlineInputBorder(
                    borderSide: BorderSide(
                        color: Colors.black,
                        width: 1.0,
                        style: BorderStyle.none),
                  ),
                ),
                autofocus: false,
              ),
InkWell(
    child: Text(
         "Save and Exit",
               style: _txtCustomHead,
    ),
    onTap: () {
        check();
    },
),
),

1 个答案:

答案 0 :(得分:0)

代替:

autofill = new TextEditingController(text: 'auto fill text');
autofill2 = new TextEditingController(text: 'auto fill text2');

尝试:

first_nameController.text = 'auto fill text';
last_nameController.text = 'auto fill text2';