我正在尝试更新TextField
以显示错误文本,直到通过外部validators
软件包验证电子邮件为止。但是,即使我从build方法中调用setState
,UI也不会更新。我尝试使用print
语句(附有屏幕截图)进行调试,其行为符合预期。如果我尝试在TextField
中传递更新的setState()
UI,为什么UI不会更新并显示下面带有错误文本的TextField?
有效的代码
无效的代码
child: TextField(
decoration: InputDecoration(
hintText: "Enter Email Id",
border: OutlineInputBorder()),
onChanged: (String value) {
emailId = value;
setState(() {
isEmail(value)
? print("true")
: TextField(
decoration: InputDecoration(
errorText: "Enter valid email"),
);
});
},
答案 0 :(得分:1)
您的代码无效,因为您没有更改父窗口小部件的状态
在其df1 = df.unstack().asfreq('Min', method='ffill').between_time('8:30','16:00').stack()
print (df1.head(10))
returns
date ticker
2016-11-28 08:30:00 aapl 0.2
amzn 0.2
fb 0.2
ge 0.2
jpm 0.2
msft 0.2
2016-11-28 08:31:00 aapl 0.2
amzn 0.2
fb 0.2
ge 0.2
属性中。您正在按设置状态创建新的小部件
onChanged:
您可以通过声明child: TextField( //parent
decoration: InputDecoration(
hintText: "Enter Email Id",
border: OutlineInputBorder()),
onChanged: (String value) {
emailId = value;
setState(() {
isEmail(value)
? print("true")
: TextField( //this is not the same widget.
decoration: InputDecoration(
errorText: "Enter valid email"),
);
});
},
并将其设置为String invalidEmailError
的{{1}}属性来解决此问题。稍后更新此字符串以获得所需的结果。
errorText