performPaint method

  1. @override
void performPaint(
  1. Buffer buffer,
  2. Offset offset
)
override

Hook for subclasses to implement actual painting.

Implementation

@override
void performPaint(Buffer buffer, Offset offset) {
  final viewport = Viewport(
    buffer,
    Rect(offset.dx, offset.dy, size.width, size.height),
  );
  final tabBar = widget as TabBar;
  if (size.width <= 0 || size.height <= 0) return;

  var currentX = 0;
  for (var i = 0; i < tabBar.labels.length; i++) {
    final label = tabBar.labels[i];
    final isActive = (i == tabBar.controller.index);
    final style = isActive ? tabBar.activeStyle : tabBar.inactiveStyle;
    final text = ' [ $label ] ';
    if (currentX + text.characters.length > size.width) break;
    viewport.writeString(currentX, 0, text, style);
    currentX += text.characters.length;
  }
}