onTransition method

  1. @override
void onTransition(
  1. Transition<PlayableWorldEvent, WorldState> transition
)
override

Called whenever a transition occurs with the given transition. A transition occurs when a new event is added and a new state is emitted from a corresponding EventHandler.

onTransition is called before a Bloc's state has been updated. A great spot to add logging/analytics at the individual Bloc level.

Note: super.onTransition should always be called first.

@override
void onTransition(Transition<Event, State> transition) {
  // Always call super.onTransition with the current transition
  super.onTransition(transition);

  // Custom onTransition logic goes here
}

See also:

Implementation

@override
void onTransition(Transition<PlayableWorldEvent, WorldState> transition) {
  super.onTransition(transition);
  final updateIndex = _scheduledUpdates.indexWhere(
    (element) => element.$1 == transition.event,
  );
  if (updateIndex != -1) {
    final (_, response, needsUpdate) = _scheduledUpdates.removeAt(
      updateIndex,
    );
    final updatePackets = response.buildUpdatePacketsFor(
      transition.nextState,
      server.channels,
      needsUpdate,
    );
    for (final packet in updatePackets) {
      sendEvent(packet.data, target: packet.channel);
    }
  }
}