constrainWidget static method

Widget constrainWidget({
  1. required M3EToolbarWidget item,
  2. required double availableExtent,
  3. required Axis axis,
  4. double opticalInset = 0,
})

Wraps a M3EToolbarWidget so it cannot exceed the bar content extent.

opticalInset mirrors the icon-button target overhang beyond its visual so widget↔action spacing matches action↔action spacing.

Implementation

static Widget constrainWidget({
  required M3EToolbarWidget item,
  required double availableExtent,
  required Axis axis,
  double opticalInset = 0,
}) {
  Widget child = item.child;
  if (item.semanticLabel != null) {
    child = Semantics(label: item.semanticLabel, child: child);
  }
  child = ConstrainedBox(
    constraints: axis == Axis.horizontal
        ? BoxConstraints(maxHeight: availableExtent)
        : BoxConstraints(maxWidth: availableExtent),
    child: child,
  );
  if (opticalInset <= 0) {
    return child;
  }
  return Padding(
    padding: axis == Axis.horizontal
        ? EdgeInsets.symmetric(horizontal: opticalInset)
        : EdgeInsets.symmetric(vertical: opticalInset),
    child: child,
  );
}