layout method

  1. @override
void layout(
  1. BoxConstraints constraints
)
override

Implementation

@override
void layout(BoxConstraints constraints) {
  super.layout(constraints);
  if (children.isNotEmpty) {
    final child = children.first;
    final trackWidth = math
        .max(thickness, gutterWidth ?? thickness)
        .toDouble();
    final reserved = overlay ? 0.0 : (math.max(0, gap) + trackWidth);
    var childConstraints = constraints;
    if (!overlay && constraints.hasBoundedWidth) {
      final maxWidth = math.max(0.0, constraints.maxWidth - reserved);
      final minWidth = math.min(constraints.minWidth, maxWidth);
      childConstraints = BoxConstraints(
        minWidth: minWidth,
        maxWidth: maxWidth,
        minHeight: constraints.minHeight,
        maxHeight: constraints.maxHeight,
      );
    }
    child.layout(childConstraints);
    size = constraints.constrain(
      Size(child.size.width + reserved, child.size.height),
    );
  }
}