使用条件自动填充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();
    },

解决方法

代替:

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';