我每 X 秒使用下面的
Timer.periodic
代码,使用我的 Costumize _sendmessage
功能向另一台设备发送一条消息,以确保仍然存在连接。
@override
void initState() {
super.initState();
timer = Timer.periodic(Duration(seconds: 5), (Timer t) =>
_sendmessage('Alive'));
}
@override
void dispose() {
timer?.cancel();
super.dispose();
}
我的问题是我还使用
_sendmessage
将其他数据发送到另一台设备,例如按下按钮时。因此,按下按钮和 Timer.periodic
可能会同时或紧接着发生,从而导致另一设备接收到的数据丢失。 (这另一台设备一次只能读取 1 个字符串)。
如何在每个
Timer.periodic
之后有延迟,以确保上述情况不会发生?
我建议您使用一个名为“isSendingData”的变量。每当您调用
_sendmessage
时,将其更新为true
,完成后将其更新为false
。
如果您的按钮被按下,您可以检查是否
isSendingData == true
并且不会再次触发操作_sendmessage
。
但我认为问题出在您的另一台设备上 - 当它接收数据时可能出现问题。希望您能找到某种方法,可以在第一个数据之后立即接收第二个数据。