Android TextField controller.addListener(()在使用controller.clear后被多次调用
TextEditingController的方法Android TextField controller.addListener(()在使用controller.clear后被多次调用,android,flutter,authentication,Android,Flutter,Authentication,TextEditingController的方法addListener()在执行clear()方法后被多次调用,只有在清除该方法时才会发生这种情况 TextEditingController _pinPutController = TextEditingController(); @override void initState() { _pinPutController.addListener(() { if (_pinPutController.text.leng
addListener()
在执行clear()
方法后被多次调用,只有在清除该方法时才会发生这种情况
TextEditingController _pinPutController = TextEditingController();
@override
void initState() {
_pinPutController.addListener(() {
if (_pinPutController.text.length > 4) {
print("Hello world");
_pinPutController.clear();
}
});
}
当if语句中的条件为true时,主体将执行两次
有人能帮我解决这个问题吗
bool isClear = false;
TextField(
controller: _pinPutController,
decoration: InputDecoration(
hintText: "Enter a message",
suffixIcon: IconButton(
onPressed: () => (isClear)?_pinPutController.clear(): null,
icon: Icon(Icons.clear),
),
),
)
通过向其中添加isClear
来更改您编写的代码
TextEditingController _pinPutController = TextEditingController();
@override
void initState() {
_pinPutController.addListener(() {
if (_pinPutController.text.length > 4) {
setState(() {
isClear = true;
});
}
});
}
不要在initstate内进行检查,您只将控制器传递给它,但我创建了一个方法并在addListener内传递了该方法,但我有相同的结果@tryharder此实现在工作时按on按钮,但我希望当此条件(_pinPutController.text.length>4)为真时清除textfild automatic