123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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;
- }
|