import 'package:flutter/rendering.dart'; class ArrowClipper extends CustomClipper { @override Path getClip(Size size) { final path = Path(); path.lineTo(0.0, size.height); path.lineTo(size.width, size.height); path.lineTo(size.width, 0.0); path.lineTo(0.0, 0.0); path.close(); const double arrowWidth = 8.0; final startPointX = (size.width - arrowWidth) / 2; var startPointY = size.height / 2 - arrowWidth / 2; path.moveTo(startPointX, startPointY); path.lineTo(startPointX + arrowWidth / 2, startPointY - arrowWidth / 2); path.lineTo(startPointX + arrowWidth, startPointY); path.lineTo(startPointX + arrowWidth, startPointY + 1.0); path.lineTo(startPointX + arrowWidth / 2, startPointY - arrowWidth / 2 + 1.0); path.lineTo(startPointX, startPointY + 1.0); path.close(); startPointY = size.height / 2 + arrowWidth / 2; path.moveTo(startPointX + arrowWidth, startPointY); path.lineTo(startPointX + arrowWidth / 2, startPointY + arrowWidth / 2); path.lineTo(startPointX, startPointY); path.lineTo(startPointX, startPointY - 1.0); path.lineTo(startPointX + arrowWidth / 2, startPointY + arrowWidth / 2 - 1.0); path.lineTo(startPointX + arrowWidth, startPointY - 1.0); path.close(); return path; } @override bool shouldReclip(covariant CustomClipper oldClipper) => false; }