import 'dart:ui'; import 'constant.dart'; ///本质是求五个点的位置,依次lineTo起来形成一条路径 Path fromBottomToCenter(Size size, int start, int end) { final path = Path(); final double line = size.width * kButtonLineAspectRatio; final double l1 = size.width * kBottomButtonLeftAspectRatio; final double r1 = size.width * kBottomButtonRightAspectRatio; final double t1 = size.height * kBottomButtonTopAspectRatio; final double b1 = size.height * kBottomButtonBottomAspectRatio; final double l2 = size.width * kRightButtonLeftAspectRatio; final double r2 = size.width * kRightButtonRightAspectRatio; final double t2 = size.height * kRightButtonTopAspectRatio; final double b2 = size.height * kRightButtonBottomAspectRatio; final double cr = size.width * kRightButtonRightAspectRatio; final double cb = size.height * kBottomButtonTopAspectRatio; final double spacing1 = ((r1 - l1) - line * 6) / 5 + line; final double spacing2 = ((b2 - t2) - line * 6) / 5 + line; final double p1x = l1 + spacing1 * start + line / 2; final double p1y = b1 - line * 3 / 2; final double p2x = p1x; final double p2y = t1 + line / 2; final double p3x = r2 - line / 2; final double p3y = t2 + spacing2 * end + line / 2; final double p4x = l2 + line / 2; final double p4y = p3y; path.moveTo(p1x, p1y); path.lineTo(p2x, p2y); assert(cr - line / 2 == p3x); assert(p2y == cb + line / 2); path.lineTo(cr - line / 2, p2y); path.lineTo(p3x, cb + line / 2); path.lineTo(p3x, p3y); path.lineTo(p4x, p4y); return path; } double getButtonSize(Size size) { return kButtonAspectRatio * size.width; }