buildBox method
Builds a column with the label and children. (Non-sidebar context)
Implementation
Widget buildBox(BuildContext context, NavigationControlData? data) {
final theme = Theme.of(context);
final scaling = theme.scaling;
final densityContentPadding = theme.density.baseContentPadding * scaling;
final labelWidget = buildLabelChild(context, data);
final paddedLabel = Container(
alignment: labelAlignment ?? Alignment.center,
padding: labelPadding ??
EdgeInsets.symmetric(horizontal: densityContentPadding * padXs),
child: labelWidget,
);
final gap = theme.density.baseGap * scaling * gapSm;
final items = children;
final childControlData = data == null
? null
: NavigationControlData(
containerType: data.containerType,
parentLabelType: data.parentLabelType,
parentLabelPosition: data.parentLabelPosition,
parentLabelSize: data.parentLabelSize,
parentPadding: data.parentPadding,
direction: data.direction,
selectedKey: data.selectedKey,
onSelected: data.onSelected,
expanded: data.expanded,
childCount: items.length,
spacing: data.spacing,
keepCrossAxisSize: data.keepCrossAxisSize,
keepMainAxisSize: data.keepMainAxisSize,
);
final flexChildren = [
if (labelPosition == NavigationLabelPosition.top ||
labelPosition == NavigationLabelPosition.start) ...[
paddedLabel,
AnimatedValueBuilder<double>(
value: data?.expanded == true ? gap : 0,
builder: (_, gap, __) => Gap(gap),
duration: kDefaultDuration,
// curve: Curves.easeInOut,
),
],
Data.inherit(
data: childControlData,
child: Flex(
direction: data?.direction ?? Axis.vertical,
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
// "The bug does not exist in reproducible code" weird ah bug
spacing: items.isEmpty ? 0 : data?.spacing ?? 0,
children: items,
),
),
if (labelPosition == NavigationLabelPosition.bottom ||
labelPosition == NavigationLabelPosition.end) ...[
AnimatedValueBuilder<double>(
value: data?.expanded == true ? gap : 0,
builder: (_, gap, __) => Gap(gap),
duration: kDefaultDuration,
// curve: Curves.easeInOut,
),
paddedLabel,
],
];
return Flex(
direction: data?.direction ?? Axis.vertical,
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: flexChildren,
);
}