getTargetCurrent function

TargetPosition? getTargetCurrent(
  1. TargetFocus target, {
  2. bool rootOverlay = false,
})

Implementation

TargetPosition? getTargetCurrent(
  TargetFocus target, {
  bool rootOverlay = false,
}) {
  if (target.keyTarget != null) {
    var key = target.keyTarget!;

    try {
      final RenderBox renderBoxRed =
          key.currentContext!.findRenderObject() as RenderBox;
      final size = renderBoxRed.size;

      BuildContext? context;
      if (rootOverlay) {
        context = key.currentContext!
            .findRootAncestorStateOfType<OverlayState>()
            ?.context;
      } else {
        context = key.currentContext!
            .findAncestorStateOfType<NavigatorState>()
            ?.context;
      }
      Offset offset;
      if (context != null) {
        offset = renderBoxRed.localToGlobal(
          Offset.zero,
          ancestor: context.findRenderObject(),
        );
      } else {
        offset = renderBoxRed.localToGlobal(Offset.zero);
      }

      return TargetPosition(size, offset);
    } catch (e) {
      throw NotFoundTargetException(target.identify);
    }
  } else {
    return target.targetPosition;
  }
}