Ui仅针对颤动中的最后一条流进行更新

问题描述

我正在制作一个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]);
                }
,

那是因为它们都执行相同的方法。快速连续执行多个执行时,最后一个将停止执行上一个。您必须找到一种在执行它们时将它们排队的方法,并且仅在上一个完成时才执行下一个。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...