如下面的GIF所示,我正在使用的TextFormField
正在反向输入值。我已经将TextDirection
属性设置为ltr
,但它没有改变任何东西。其他TextFormFields
似乎没有这个问题。输入的文本正在使用Navigator.pop
发送回另一个屏幕,并且它是以相同的反向人工发送的。
Weird TextFormField
导致问题的textFormField的代码:
TextFormField(
// validator: (String value) {
// return value.isEmpty ? "task must have a name" : null;
// },
textDirection: TextDirection.ltr,
maxLength: 100,
controller: newcontroller, // Just an ordinary TextController
onChanged: (value) {
setState(() {
newcontroller.text = value;
});
},
decoration: InputDecoration(
errorText: _validate // Just a boolean value set to false by default
? 'Value Can\'t Be Empty' : null,
labelText: "name of task"
),
style: TextStyle(height: 1.2, fontSize: 20, color: Colors.black87)
)
6条答案
按热度按时间r55awzrz1#
当调用
onChanged
时,您不必在newcontroller.text
中设置文本。在您的TextFormField
中输入的文本在默认情况下被分配给newcontroller
。您得到这个错误是因为对于这段代码,
因此,请尝试删除以下代码
ldxq2e6h2#
您可以在**Navigator.pop(context,您要传递任何内容)**中发送任何内容
myss37ts3#
将更改替换为编辑完成。
7xzttuei4#
只要移除onChanged函数就可以了,没有必要。
wb1gzix05#
bis0qfac6#
不幸的是,onEditingComplete并不总是触发(例如,在焦点更改时),因此,如果您正在编辑文本变量,您仍然可以使用onChanged作为更新更改的最可靠方式,但不应使用onChanged value参数,也不应使用setState(这会导致反转文本)。