【发布时间】:2019-06-15 18:59:33
【问题描述】:
当我将 TextEditingController 添加到我的 TextFormField 时,文本字段的值会在与它交互后重置/删除。
在代码示例中,我删除了不必要的小部件(对于较短的问题):
Widget build(BuildContext context) {
final usernameTextEditController = TextEditingController();
final passwordTextEditController = TextEditingController();
final confirmPasswordTextEditController = TextEditingController();
//...
TextFormField(
validator: InputValidator.inputUsernameValidate,
controller: usernameTextEditController,
decoration: InputDecoration(
labelText: 'Your user name.',
),
),
TextFormField(
controller: passwordTextEditController,
validator: InputValidator.inputPasswordValidate,
decoration: InputDecoration(
labelText: 'Your password',
),
obscureText: true,
),
TextFormField(
controller: confirmPasswordTextEditController,
validator: InputValidator.inputPasswordValidate,
decoration: InputDecoration(
labelText: 'Confirm Password',
),
obscureText: true,
),
//...
}
【问题讨论】:
-
将此代码
final usernameTextEditController = TextEditingController();移出build()。每次 Flutter 更新视图时,都会创建一个具有默认值的新控制器。