问题描述
我正在制作一个sms_app,当我按下发送短信按钮时,它可以从“对象列表”中获取数据。对象具有一种返回流的方法。我正在使用Listviewbuilder遍历数据,并通过Streamviewbuilder收听流。所有对象流都在执行发送消息的功能。如果我按了第一个发送按钮,然后等待,请按第二个按钮并等待,它会相应地更新UI。
但
UI正在针对最后一个流进行更新。如果我不等待就一个接一个地按下按钮。我在做什么错> 。
这是Video
Error Code: 1833. Cannot change column 'emp_no': used in a foreign key constraint 'dept_emp_ibfk_1' of table 'employees.dept_emp'
解决方法
我认为如果过快按下按钮,UI将无法正确更新。
您可以禁用按钮(下面的示例),直到消息传递完毕为止,您只需将按钮设置为StreamBuilder的子代即可。
onPressed: snapshot.data == SmsMessageState.Sending ? null : () async {
await sender.sendSms(smsList[index]);
}
,
那是因为它们都执行相同的方法。快速连续执行多个执行时,最后一个将停止执行上一个。您必须找到一种在执行它们时将它们排队的方法,并且仅在上一个完成时才执行下一个。