draw method

  1. @override
void draw(
  1. Canvas canvas,
  2. ChartPainterData painterData,
  3. ChartTouchCallbackData touchedData,
  4. double tolerance,
)
override

Draw tooltip pie shape.

Implementation

@override
void draw(Canvas canvas, ChartPainterData painterData,
    ChartTouchCallbackData touchedData, double tolerance) {
  final T item = touchedData.selectedItem as T;
  final TextPainter namePainter = TextPainter(
    text: TextSpan(
      text: onTextName(item),
      style: nameTextStyle,
    ),
    textDirection: TextDirection.ltr,
  )..layout();
  final TextPainter valuePainter = TextPainter(
    text: TextSpan(
      text: onTextValue(item),
      style: valueTextStyle,
    ),
    textDirection: TextDirection.ltr,
  )..layout();
  final Offset position = Offset(
    (touchedData.clickedPos?.dx ?? 0.0) -
        max(namePainter.width, valuePainter.width) / 2.0 -
        padding.horizontal / 2.0,
    (touchedData.clickedPos?.dy ?? 0.0) -
        (namePainter.height + valuePainter.height) / 2.0 -
        padding.vertical / 2.0,
  );
  final Size size = Size(
    max(namePainter.width, valuePainter.width) + padding.horizontal,
    namePainter.height + valuePainter.height + padding.vertical,
  );
  canvas.drawRRect(
    RRect.fromRectAndRadius(
      position & size,
      Radius.circular(radius),
    ),
    Paint()..color = backgroundColor,
  );
  namePainter.paint(
    canvas,
    Offset(
      position.dx + (size.width - namePainter.width) / 2.0,
      position.dy + padding.top,
    ),
  );
  valuePainter.paint(
    canvas,
    Offset(
      position.dx + (size.width - valuePainter.width) / 2.0,
      position.dy + namePainter.height + padding.top,
    ),
  );
}