如何在每个Timer.periodic之后有延迟

问题描述 投票:0回答:1

我每 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
之后有延迟,以确保上述情况不会发生?

flutter timer
1个回答
0
投票

我建议您使用一个名为“isSendingData”的变量。每当您调用

_sendmessage
时,将其更新为
true
,完成后将其更新为
false

如果您的按钮被按下,您可以检查是否

isSendingData == true
并且不会再次触发操作
_sendmessage

但我认为问题出在您的另一台设备上 - 当它接收数据时可能出现问题。希望您能找到某种方法,可以在第一个数据之后立即接收第二个数据。

© www.soinside.com 2019 - 2024. All rights reserved.