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();
},
),
),
答案 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';