buildChildren method

List<Widget> buildChildren(
  1. List<DebugPropertyNode> children, [
  2. double leftPadding = 0.0
])

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;
}