buildChild method

Widget buildChild(
  1. InfiniteMenu rootMenu,
  2. InfiniteMenu parentMenu,
  3. int level
)

Implementation

Widget buildChild(InfiniteMenu rootMenu, InfiniteMenu parentMenu, int level) {
  List<InfiniteMenu> currentData = parentMenu.children ?? [];
  Widget parent = Column(
    children: [
      ListView.separated(
          shrinkWrap: true,
          controller: ScrollController(),
          physics: const NeverScrollableScrollPhysics(),
          itemCount: currentData.length,
          itemBuilder: (context, index) {
            InfiniteMenu bean = currentData[index];
            return Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                parentMenu.isChecked
                    ? widget.buildMenuItem
                        .call(this, bean == _lastClickItem, bean, level)
                    : const SizedBox(),
                parentMenu.isChecked
                    ? Row(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Expanded(
                              child: Padding(
                            padding: EdgeInsets.only(
                                left: widget.titleChildSpace * (level + 1)),
                            child: buildChild(rootMenu, bean, level + 1),
                          ))
                        ],
                      )
                    : const SizedBox(),
              ],
            );
          },
          separatorBuilder: (context, index) {
            return widget.buildSeparator
                    ?.call(context, currentData[index], level) ??
                const SizedBox();
          })
    ],
  );
  return parentMenu.isChecked ? parent : const SizedBox();
}