buildChildren method
Implementation
List<Widget> buildChildren(
List<DebugPropertyNode> children, [
double leftPadding = 0.0,
]) {
List<Widget> widgets = [];
for (var child in children) {
String? name = child.name;
String description = child.toDescription().trimRight();
bool wrapDescription =
description.contains("\n") || description.length >= 120;
var nextChildren = buildChildren(child.getChildren(), _kChildrenPadding);
Widget wrapTooltip(Widget child, {String? tooltip}) {
if (tooltip != null) {
return Tooltip(
message: tooltip,
child: child,
);
}
return child;
}
widgets.add(
Padding(
padding: EdgeInsets.only(left: leftPadding),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.symmetric(vertical: 1.0),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (child.showName && name != null)
wrapTooltip(
SelectableText(
child.showSeparator ? "$name:" : name,
style: const TextStyle(fontWeight: FontWeight.bold),
),
tooltip: child.tooltip,
),
if (description.isNotEmpty && !wrapDescription)
Expanded(
child: wrapTooltip(
Padding(
padding: child.showName
? const EdgeInsets.only(left: 4.0)
: EdgeInsets.zero,
child: SelectableText(description),
),
tooltip: !child.showName || name == null
? child.tooltip
: null,
),
),
],
),
),
if (wrapDescription)
Padding(
padding: child.showName
? const EdgeInsets.only(left: _kChildrenPadding)
: EdgeInsets.zero,
child: SelectableText(description),
),
...buildChildren(child.getProperties(), _kChildrenPadding),
if (nextChildren.isNotEmpty)
Column(
children: nextChildren,
)
],
),
),
);
}
return widgets;
}