我正在尝试实现添加电子邮件输入列表但用户的功能。这就是我到目前为止所拥有的
List<String> _notificationEmails =[];
var _notificationEmailsController = TextEditingController();
Widget _buildNotificationEmailsInput() {
return TextFormField(
controller: _notificationEmailsController,
style: inputTextStyle,
maxLines: null,
validator: (String value) {
print(value);
if (value.isEmpty) {
return 'Emails Required';
}
return null;
},
onChanged: (String value){
if(value.substring(value.length-1)==','){
print('here');
setState(() {
_notificationEmails.add(value.substring(0,value.length-1));
});
_notificationEmailsController.clear();
}
print(_notificationEmails);
},
);
}
我的预期结果是,当用户输入一封电子邮件然后在其后添加一个逗号时,该电子邮件被附加到列表中并且输入字段被清除,但我得到一个导致此 _notificationEmails.add(value.substring(0,value.length-1));
运行到无穷大的操作循环。
这是日志
[ +3 ms] flutter: [je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gmail.com, je@gm<…>
这种情况一直在继续。我做错了什么?
更新
如果它有帮助,我已经意识到这个问题是因为每次_notificationEmailsController.clear();
被调用时,它都会触发onChange()
循环。