1234567891011121314151617181920212223242526272829303132 |
- import 'dart:ui';
- import 'package:battle/button/button_controller.dart';
- import 'package:flutter/material.dart';
- import 'package:widget/widget.dart';
- class ButtonPainter extends CustomPainter {
- final ButtonController controller;
- ButtonPainter({required this.controller}) : super(repaint: controller);
- @override
- void paint(Canvas canvas, Size size) {
- final paint = Paint()
- ..style = PaintingStyle.fill
- ..strokeWidth = 4;
- for (var button in controller.buttonList) {
- var path = fromBottomToCenter(size, button.startIndex, button.endIndex,button.ops);
- var pms = path.computeMetrics();
- for (var pm in pms) {
- Tangent? tangent = pm.getTangentForOffset(pm.length * button.process);
- if (tangent == null) continue;
- paint.color = button.color;
- canvas.drawCircle(tangent.position, getButtonSize(size) / 2, paint);
- }
- }
- }
- @override
- bool shouldRepaint(covariant CustomPainter oldDelegate) => true;
- }
|