render method

  1. @override
void render(
  1. Buffer buffer,
  2. Rect area
)
override

Renders the underlying widget to the provided buffer within the area.

Implementation

@override
void render(Buffer buffer, Rect area) {
  final paddingWidget = widget as Padding;
  final childWidth =
      area.width - paddingWidget.padding.left - paddingWidget.padding.right;
  final childHeight =
      area.height - paddingWidget.padding.top - paddingWidget.padding.bottom;

  if (childWidth <= 0 || childHeight <= 0) return;

  final childArea = Rect(
    area.x + paddingWidget.padding.left,
    area.y + paddingWidget.padding.top,
    childWidth,
    childHeight,
  );

  if (childElement != null &&
      childElement!.widget.runtimeType == paddingWidget.child.runtimeType) {
    childElement!.update(paddingWidget.child);
  } else {
    childElement = paddingWidget.child.createElement();
    childElement!.mount(this);
  }

  final childViewport = Viewport(buffer, childArea);
  childElement!.render(childViewport, Rect(0, 0, childWidth, childHeight));
}