computeNotch method

Path computeNotch (Rect main, Rect fab, Offset start, Offset end)

Implementation

Path computeNotch(Rect main, Rect fab, Offset start, Offset end) {
  final Rect marginFab = fab.inflate(widget.notchMargin);
  if (!main.overlaps(marginFab)) return Path()..lineTo(end.dx, end.dy);

  final Rect intersection = marginFab.intersect(main);
  final double notchCenter = intersection.height *
      (marginFab.height / 2.0) /
      (marginFab.width / 2.0);

  return Path()
    ..lineTo(marginFab.center.dx - notchCenter, main.top)
    ..lineTo(marginFab.left + marginFab.width / 2.0, marginFab.bottom)
    ..lineTo(marginFab.center.dx + notchCenter, main.top)
    ..lineTo(end.dx, end.dy);
}