Flutter接入IM后,点击事件消息回调触发的问题

用户2802619
2020-07-23 12:57 88 1

最近在使用极光IM为APP增加一个聊天系统,APP是由Flutter写的,我用了一个Bloc来管理IM的一些封装方法,但是出现了一个不知道算不算是bug的情况。

 //点击事件
    jmessage.addClickMessageNotificationListener((msg) {

      print('点击消息触发事件');

        if (!_lock) {
          _lock = true;
          onOpenNotification(msg);
        }
    });
void onOpenNotification(dynamic msg){
    if (msg != null) {
      Widget page = pageRoute(msg);
      if (page != null) {
        _lock = false;
        jumpPage(msg);
      }
    }
  }

正常来说当用户点击消息回调时去执行一个页面跳转的方法,从而进入到和发送消息者的聊天界面。但是当我debug查看代码执行步骤时发现会自动跳过这个跳转的代码块,并结束这次的点击事件。如果我在这个执行跳转的方法里增加一个异步的声明的话,可以顺利跳转到对应的页面,但同时会出现一个bug,跳转的这个页面会被打开多次。当我debug查看执行步骤时发现,我只点击了一个消息提示,但是会同时调用了多次点击消息回调的监听事件,这个是属于我写的监听出了问题还是极光IM的Flutter库的一个小bug?求解答。

1个回答

热门排序
  • 首先,你调用的im flutter的接口如果是异步,那你的方法可能也要说异步的啊。

    另外,对于跳转两次的问题,你可以在你的代码层面加个一个过滤判断,同一条消息点击跳转在生命周期内只执行一次就行了,因为点击也只可能一次。

gptbots-widget