defaultTreeNodeBuilder static method

Widget defaultTreeNodeBuilder(
  1. BuildContext context,
  2. TreeSliverNode<Object?> node,
  3. AnimationStyle toggleAnimationStyle
)

Returns the default tree row for a given TreeSliverNode.

Used by TreeSliver.treeNodeBuilder.

This will return a Row containing the toString of TreeSliverNode.content. If the TreeSliverNode is a parent of additional nodes, a arrow icon will precede the content, and will trigger an expand and collapse animation when tapped.

Implementation

static Widget defaultTreeNodeBuilder(
  BuildContext context,
  TreeSliverNode<Object?> node,
  AnimationStyle toggleAnimationStyle,
) {
  final Duration animationDuration =
      toggleAnimationStyle.duration ?? TreeSliver.defaultAnimationDuration;
  final Curve animationCurve = toggleAnimationStyle.curve ?? TreeSliver.defaultAnimationCurve;
  final int index = TreeSliverController.of(context).getActiveIndexFor(node)!;
  return Padding(
    padding: const EdgeInsets.all(8.0),
    child: Row(
      children: <Widget>[
        // Icon for parent nodes
        TreeSliver.wrapChildToToggleNode(
          node: node,
          child: SizedBox.square(
            dimension: 30.0,
            child: node.children.isNotEmpty
                ? AnimatedRotation(
                    key: ValueKey<int>(index),
                    turns: node.isExpanded ? 0.25 : 0.0,
                    duration: animationDuration,
                    curve: animationCurve,
                    // Renders a unicode right-facing arrow. >
                    child: const Icon(IconData(0x25BA), size: 14),
                  )
                : null,
          ),
        ),
        // Spacer
        const SizedBox(width: 8.0),
        // Content
        Text(node.content.toString()),
      ],
    ),
  );
}