flutter - 使用条件自动填充 textformfield 控制器
问题描述
我试图在我的控制器中制作带有条件的 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';
推荐阅读
- sonarqube - 分析 ANT 声纳扫描仪时出错
- python - 一个单词在 .txt 文件中使用的次数的字典/单词计数
- node.js - Mongoose model architecture and Node require order
- cuda - numba cuda 使用 += 时不会产生正确的结果(需要减少 gpu 吗?)
- c - 如何使用 C 中的函数和指针更改 int 值
- python - Python IOError:[Errno 22] 创建文件时
- javascript - 数据表导出到excel
- c# - 使用 Linq 连接合并数据表时出现错误无法隐式转换类型
- javascript - 获取动态元素属性并在另一个元素中使用它
- javascript - 如何防止javascript if语句将0评估为空字符串?