onSnapEvent method

void onSnapEvent(
  1. String followerId,
  2. void callback(
    1. SnapEvent
    )
)

Listen for snap events on a specific follower.

Events include:

Example: Implement magnetic snap behavior:

snapClient.onSnapEvent(followerId, (event) {
  if (event is SnapDragEnded) {
    if (event.snapDistance < 50) {
      snapClient.reSnap(followerId);  // Close enough, snap back
    } else {
      snapClient.detach(followerId);  // Too far, fully detach
    }
  }
});

Implementation

void onSnapEvent(String followerId, void Function(SnapEvent) callback) {
  onWindowEvent(followerId, 'followerDragStarted', (e) {
    callback(SnapDragStarted.fromEventData(
      followerId,
      Map<String, dynamic>.from(e.data),
    ));
  });
  onWindowEvent(followerId, 'followerDragging', (e) {
    callback(SnapDragging.fromEventData(
      followerId,
      Map<String, dynamic>.from(e.data),
    ));
  });
  onWindowEvent(followerId, 'followerDragEnded', (e) {
    callback(SnapDragEnded.fromEventData(
      followerId,
      Map<String, dynamic>.from(e.data),
    ));
  });
  onWindowEvent(followerId, 'detached', (e) {
    callback(SnapDetached.fromEventData(
      followerId,
      Map<String, dynamic>.from(e.data),
    ));
  });
  onWindowEvent(followerId, 'snapped', (e) {
    callback(SnapSnapped.fromEventData(
      followerId,
      Map<String, dynamic>.from(e.data),
    ));
  });
  onWindowEvent(followerId, 'proximityEntered', (e) {
    callback(SnapProximityEntered.fromEventData(
      followerId,
      Map<String, dynamic>.from(e.data),
    ));
  });
  onWindowEvent(followerId, 'proximityExited', (e) {
    callback(SnapProximityExited.fromEventData(
      followerId,
      Map<String, dynamic>.from(e.data),
    ));
  });
  onWindowEvent(followerId, 'proximityUpdated', (e) {
    callback(SnapProximityUpdated.fromEventData(
      followerId,
      Map<String, dynamic>.from(e.data),
    ));
  });
}