topic_events 0.0.2 copy "topic_events: ^0.0.2" to clipboard
topic_events: ^0.0.2 copied to clipboard

Dead simple event broker

example/example.dart

import 'dart:async';

import 'package:topic_events/topic_events.dart';

void main() {
  final socket = AnimalSocket();

  TopicEventBroker()
    ..addManager(CatManager())
    ..addManager(DogManager())
    ..setTransport(socket);

  socket.connect();
  socket.events
      .add(TopicEvent(topicCat, cmdSay, 'something')); // "meow something"
  socket.events
      .add(TopicEvent(topicDog, cmdSay, 'anything')); // "woof anything"
}

class AnimalSocket extends TopicEventTransport {
  final events = StreamController<TopicEvent>();

  void connect() => events.stream.listen(onReceive);

  @override
  void onSend(TopicEvent event) {
    if (event.cmd == cmdPrint) print(event.payload);
  }
}

class CatManager extends TopicManager {
  @override
  Topic get topic => topicCat;

  @override
  void handleEvent(TopicEvent event) {
    if (event.cmd == cmdSay) {
      sendEvent(cmdPrint, 'meow ${event.payload}');
    }
  }
}

class DogManager extends TopicManager {
  @override
  Topic get topic => topicDog;

  @override
  void handleEvent(TopicEvent event) {
    if (event.cmd == cmdSay) {
      sendEvent(cmdPrint, 'woof ${event.payload}');
    }
  }
}

const topicCat = 'cat', topicDog = 'dog', cmdSay = 'say', cmdPrint = 'print';
1
likes
130
pub points
0%
popularity

Publisher

unverified uploader

Dead simple event broker

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

More

Packages that depend on topic_events