in packages/devtools_app/lib/src/inspector/layout_explorer/flex/flex.dart [243:365]
Widget _buildLayout(BuildContext context, BoxConstraints constraints) {
final colorScheme = Theme.of(context).colorScheme;
final maxHeight = constraints.maxHeight;
final maxWidth = constraints.maxWidth;
final flexDescription = Align(
alignment: Alignment.centerLeft,
child: Container(
margin: EdgeInsets.only(
top: mainAxisArrowIndicatorSize,
left: crossAxisArrowIndicatorSize + margin,
),
child: InkWell(
onTap: () => onTap(properties),
child: WidgetVisualizer(
title: flexType,
layoutProperties: properties,
isSelected: highlighted == properties,
overflowSide: properties.overflowSide,
hint: Container(
padding: const EdgeInsets.all(4.0),
child: Text(
'Total Flex Factor: ${properties?.totalFlex?.toInt()}',
textScaleFactor: largeTextScaleFactor,
style: const TextStyle(
color: emphasizedTextColor,
fontWeight: FontWeight.bold,
),
overflow: TextOverflow.ellipsis,
),
),
child: VisualizeFlexChildren(
state: this,
properties: properties,
children: children,
highlighted: highlighted,
scrollController: scrollController,
direction: direction,
),
),
),
),
);
final verticalAxisDescription = Align(
alignment: Alignment.bottomLeft,
child: Container(
margin: EdgeInsets.only(top: mainAxisArrowIndicatorSize + margin),
width: crossAxisArrowIndicatorSize,
child: Column(
children: [
Expanded(
child: ArrowWrapper.unidirectional(
arrowColor: verticalColor(colorScheme),
child: Truncateable(
truncate: maxHeight <= minHeightToAllowTruncating,
child: RotatedBox(
quarterTurns: 3,
child: Text(
properties.verticalDirectionDescription,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.center,
textScaleFactor: largeTextScaleFactor,
style: TextStyle(
color: verticalTextColor(colorScheme),
),
),
),
),
type: ArrowType.down,
),
),
Truncateable(
truncate: maxHeight <= minHeightToAllowTruncating,
child: _buildAxisAlignmentDropdown(Axis.vertical, colorScheme),
),
],
),
),
);
final horizontalAxisDescription = Align(
alignment: Alignment.topRight,
child: Container(
margin: EdgeInsets.only(left: crossAxisArrowIndicatorSize + margin),
height: mainAxisArrowIndicatorSize,
child: Row(
children: [
Expanded(
child: ArrowWrapper.unidirectional(
arrowColor: horizontalColor(colorScheme),
child: Truncateable(
truncate: maxWidth <= minWidthToAllowTruncating,
child: Text(
properties.horizontalDirectionDescription,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.center,
textScaleFactor: largeTextScaleFactor,
style: TextStyle(color: horizontalTextColor(colorScheme)),
),
),
type: ArrowType.right,
),
),
Truncateable(
truncate: maxWidth <= minWidthToAllowTruncating,
child: _buildAxisAlignmentDropdown(Axis.horizontal, colorScheme),
),
],
),
),
);
return Container(
constraints: BoxConstraints(maxWidth: maxWidth, maxHeight: maxHeight),
child: Stack(
children: [
flexDescription,
verticalAxisDescription,
horizontalAxisDescription,
],
),
);
}