Implementation
void broadcast<T>(T Function() create,
{CancelToken? cancelToken, List<Cubix>? cubixes}) {
Object? event;
void Function(Cubix) invoker = <T>[] is List<ActionBase>
? (cubix) {
final action = create() as ActionBase;
if (action.canDispatch(cubix)) {
cubix.dispatchGeneric(action, cancelToken: cancelToken);
}
}
: (cubix) {
cubix.emit(event ??= create() as Object);
};
if (cubixes != null) {
for (final cubix in cubixes) {
invoker(cubix);
}
} else {
walk((dependency) {
if (dependency is Cubix) {
invoker(dependency);
}
return true;
});
}
}