build method
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],
);
}