causality 0.0.1
causality: ^0.0.1 copied to clipboard
Cause and effect in the Dart universe. A way to describe the relation between causes and effects.
import 'package:causality/causality.dart';
void main() async {
final causalityUniverse = CausalityUniverse();
printDataEffect.observe(
[
DataAvailableCause,
],
universe: causalityUniverse,
);
causalityUniverse
..observe(
causeTypes: [
DataRequestedCause,
],
effect: getDataEffect,
)
..emit(DataRequestedCause());
await causalityUniverse.idle();
}
class DataRequestedCause extends Cause {}
class DataAvailableCause extends Cause {
DataAvailableCause(this.data);
final String data;
}
final getDataEffect = Effect(
(_) async => [
DataAvailableCause('data'),
],
);
final printDataEffect = Effect((cause) {
switch (cause) {
case DataAvailableCause _:
// ignore: avoid_print
print(cause.data);
}
return [];
});