我是新的Flutter,并试图更好地理解它。
FormFieldText(
label: "First Name",
initialValue:firstName,
validator: (value) {
if (value.isEmpty) return "Name must be provided";
return null;
},
onChanged: ((value) {
setState(() {
member?.firstName = value;
});
}),
),
3条答案
按热度按时间bf1o4zei1#
使用函数setState强制ui重新构建,这将在屏幕上显示更改,但不使用它什么也做不了
bakd9h0s2#
如果你想改变你的屏幕上的东西与该值,你应该把它放在设置状态,然后用户可以看到每一个变化,它是可用的在搜索栏,每一个字,你键入将搜索数据库和显示结果.但如果你不使用设置状态在更改,UI不显示任何东西,直到你刷新页面.如果你不想显示每一个输入的变化,您可以使用控制器并保存值与一个按钮在最后.
h43kikqp3#
你可以直接赋值而不需要
setState()
,但是如果你不想在用户输入时显示文本或运行/回调函数,那么你根本不需要使用onChanged属性。如果你需要构建一个不断监听用户输入的功能,这个属性会更有用。每当用户在表单域中输入一个新字符时,它都会回调一个函数。
在上面的示例中,您的功能是删除变量
member?.firstName
,并在用户每次输入内容时将其替换为新值。例如,这对于在用户输入时显示预览非常有用。您只需要在屏幕的某个位置显示一个文本小部件,如Text (member?.firstName.toString)
。它将直观地显示与用户输入的1乘1相同的字母。onChanged属性对于像
search
这样的函数很有用,在这里你可以在用户输入的时候显示建议。另一个例子是像200/2000 words
这样显示字符的数量,让用户知道在达到最大值之前他还剩下多少字符。