flutter desktop event_bus 简单使用

1.需求

最近使用flutter desktop,开发一个mqtt的桌面工具。

mqtt的发送没有问题,但是订阅的实现有点麻烦。
订阅需要listen监听到消息后,返回给页面,页面刷新收到的消息数据,在页面展示出来。
网上查找,最好实现的方式是event_bus,用起来还真不错。

2.实现

  • 先单独实现个eventbus
import 'package:event_bus/event_bus.dart';

class rmsgdata {
  late final String data;
  
  rmsgdata(this.data);
}

EventBus eventBus = EventBus();
  • UI页面部分订阅topic后,开始监听eventbus
btnsubscribeMsg(context) async {
    mcc = MqttClient(clientid!);
    mc = await mcc.msgSubscribe(topicname);
    showMaterialDialogSingle(context, "订阅成功");
    eventBus.on().listen((event) {
      if (!mounted) return;
      setState(() {
        backMsgList!.add(event.data);
      });
    });
  }
  • 发送部分,mqtt监听到消息后,发送eventbus
void onReceivedHandle(client, topic, payload) {
  print("我是处理函数");
  serverMqttSend(client, topic, "success");
  eventBus.fire(rmsgdata(payload));
}

完成了前端页面的刷新。

你可能感兴趣的:(flutter desktop event_bus 简单使用)