button_painter.dart 985 B

1234567891011121314151617181920212223242526272829303132
  1. import 'dart:ui';
  2. import 'package:battle/button/button_controller.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:widget/widget.dart';
  5. class ButtonPainter extends CustomPainter {
  6. final ButtonController controller;
  7. ButtonPainter({required this.controller}) : super(repaint: controller);
  8. @override
  9. void paint(Canvas canvas, Size size) {
  10. final paint = Paint()
  11. ..style = PaintingStyle.fill
  12. ..strokeWidth = 4;
  13. for (var button in controller.buttonList) {
  14. var path = fromBottomToCenter(size, button.startIndex, button.endIndex,button.ops);
  15. var pms = path.computeMetrics();
  16. for (var pm in pms) {
  17. Tangent? tangent = pm.getTangentForOffset(pm.length * button.process);
  18. if (tangent == null) continue;
  19. paint.color = button.color;
  20. canvas.drawCircle(tangent.position, getButtonSize(size) / 2, paint);
  21. }
  22. }
  23. }
  24. @override
  25. bool shouldRepaint(covariant CustomPainter oldDelegate) => true;
  26. }