attach method
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;
}