build method

  1. @override
Widget build(
  1. BuildContext context,
  2. TreeState state,
  3. dynamic nodeState
)
override

Implementation

@override
Widget build(final BuildContext context, final TreeState state,
    final WidgetState nodeState) {
  final crossAxisCountString = crossAxisCount.get(
    deviceType: state.deviceType,
    forPlay: state.forPlay,
    context: context,
    loop: nodeState.loop,
  );
  final mainAxisSpacingString = mainAxisSpacing.get(
    deviceType: state.deviceType,
    forPlay: state.forPlay,
    context: context,
    loop: nodeState.loop,
  );
  final crossAxisSpacingString = crossAxisSpacing.get(
    deviceType: state.deviceType,
    forPlay: state.forPlay,
    context: context,
    loop: nodeState.loop,
  );
  final childAspectRatioString = childAspectRatio.get(
    deviceType: state.deviceType,
    forPlay: state.forPlay,
    context: context,
    loop: nodeState.loop,
  );
  final children = const NodeOverrideExecuter()
      .executeChildren(context, nodeState, this.children);
  if (children.isEmpty) {
    return const SizedBox();
  }
  return GridView.builder(
    gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
      crossAxisCount: int.tryParse(crossAxisCountString) ?? 2,
      mainAxisSpacing: double.tryParse(mainAxisSpacingString) ?? 2,
      crossAxisSpacing: double.tryParse(crossAxisSpacingString) ?? 2,
      childAspectRatio: double.tryParse(childAspectRatioString) != null &&
              (double.tryParse(childAspectRatioString) ?? 0) > 0.1
          ? double.parse(childAspectRatioString)
          : 1,
    ),
    padding: const EdgeInsets.all(0),
    shrinkWrap: shrinkWrap,
    primary: isPrimary,
    scrollDirection: isVertical ? Axis.vertical : Axis.horizontal,
    itemCount: children.length,
    itemBuilder: (_, index) => children[index],
  );
}