useOnClickOutside function

void useOnClickOutside(
  1. GlobalNodeKey<Element> target,
  2. void listener(
    1. PointerEvent event
    ), {
  3. List<GlobalNodeKey<Element>> additionalTargets = const <GlobalNodeKey<web.Element>>[],
  4. bool enabled = true,
})

Calls listener for pointer presses outside target and related elements.

Implementation

void useOnClickOutside(
  GlobalNodeKey<web.Element> target,
  void Function(web.PointerEvent event) listener, {
  List<GlobalNodeKey<web.Element>> additionalTargets = const <GlobalNodeKey<web.Element>>[],
  bool enabled = true,
}) {
  useEventListener<web.PointerEvent>(
    'pointerdown',
    (event) {
      final nodes = <web.Node>[
        ?target.currentNode,
        for (final key in additionalTargets) ?key.currentNode,
      ];
      if (platform.eventOccurredOutside(event, nodes)) listener(event);
    },
    enabled: enabled,
    options: const WebEventListenerOptions(capture: true),
  );
}