attach method

  1. @override
Widget? attach(
  1. BuildContext context,
  2. NavigationViewController controller
)
override

Implementation

@override
Widget? attach(
  BuildContext context,
  NavigationViewController controller,
) {
  Widget child = Flex(
    direction: controller.navDirection,
    mainAxisSize: MainAxisSize.max,
    crossAxisAlignment: controller.navCrossDirection,
    mainAxisAlignment: controller.navMainDirection,
    children: List.generate(controller.length, (index) {
      var item = controller.items[index];
      var selected = index == controller.currentIndex;
      Widget child = NavigationItem(
        key: item.key,
        isSelected: item.isSelected ? true : selected,
        isVisible: item.isVisible,
        icon: item.icon,
        iconState: item.iconState,
        iconSize: item.iconSize,
        iconSizeState: item.iconSizeState ?? controller.iconSizeState,
        iconTint: item.iconTint ?? controller.iconTint,
        iconTintState: item.iconTintState ?? controller.iconTintState,
        iconTheme: item.iconTheme ?? controller.iconTheme,
        iconThemeState: item.iconThemeState ?? controller.iconThemeState,
        title: item.title,
        titleState: item.titleState,
        titleColor: item.titleColor ?? controller.titleColor,
        titleColorState: item.titleColorState ?? controller.titleColorState,
        titleSize: item.titleSize ?? controller.titleSize,
        titleSizeState: item.titleSizeState ?? controller.titleSizeState,
        titleStyle: item.titleStyle ?? controller.titleStyle,
        titleStyleState: item.titleStyleState ?? controller.titleStyleState,
        background: item.background ?? controller.background,
        backgroundState: item.backgroundState ?? controller.backgroundState,
        maxWidth: item.maxWidth ?? controller.itemMaxWidth,
        minWidth: item.minWidth ?? controller.itemMinWidth,
        maxHeight: item.maxHeight ?? controller.itemMaxHeight,
        minHeight: item.minHeight ?? controller.itemMinHeight,
        margin: item.margin ?? controller.itemMargin,
        marginX: item.marginX ?? controller.itemMarginX,
        marginY: item.marginY ?? controller.itemMarginY,
        padding: item.padding ?? controller.itemPadding,
        paddingX: item.paddingX ?? controller.itemPaddingX,
        paddingY: item.paddingY ?? controller.itemPaddingY,
        spaceBetween: item.spaceBetween ?? controller.spaceBetween,
        spaceBetweenState:
            item.spaceBetweenState ?? controller.spaceBetweenState,
        iconController: item.iconController ?? iconController,
        itemController: item.itemController ?? itemController,
        labelController: item.labelController ?? labelController,
        onClick: (context) {
          if (item.onClick != null) item.onClick?.call(context);
          controller.onNotify(index);
        },
      );
      if (controller.navigationType.isFixed) {
        return Expanded(child: child);
      } else {
        return child;
      }
    }),
  );

  if (controller.navigationType.isScrollable) {
    return SingleChildScrollView(
      scrollDirection: controller.navDirection,
      child: child,
    );
  }
  return child;
}