Skip to content

Instantly share code, notes, and snippets.

@Hwan-seok
Last active March 2, 2022 08:03
Show Gist options
  • Save Hwan-seok/8c0e602091b3ff710053131549f2e4c6 to your computer and use it in GitHub Desktop.
Save Hwan-seok/8c0e602091b3ff710053131549f2e4c6 to your computer and use it in GitHub Desktop.
StateBroadcaster
import 'dart:async';
void main() {
final broadcaster = StateBroadcaster();
}
class StateBroadcaster {
final _sinkMap = <Type, StreamController<dynamic>>{};
void notify<T>(T value) {
setMapIfNeeded();
_sinkMap[T]?.add(value);
}
StreamSubscription<T> listen<T>(void Function(T) onData) {
setMapIfNeeded();
return _sinkMap[T].stream.listen(onData);
}
void setMapIfNeeded<T>() {
_sinkMap[T] ??= StreamController<T>.broadcast();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment