toCNNavigationBarAction method
CNNavigationBarAction
toCNNavigationBarAction()
Convert to CNNavigationBarAction for iOS implementation
Implementation
CNNavigationBarAction toCNNavigationBarAction() {
if (_isFixedSpace) {
return CNNavigationBarAction.fixedSpace(_spaceWidth ?? 8);
}
if (_isFlexibleSpace) {
return CNNavigationBarAction.flexibleSpace();
}
// Handle popup menu actions - convert BasePopupMenuItem to CNPopupMenuItem
if (popupMenuItems != null && onPopupMenuSelected != null) {
// Convert BasePopupMenuItem to CN format
final cnItems = popupMenuItems!.map((item) {
if (item.isDivider) {
return const CNPopupMenuDivider();
}
CNSymbol? itemIcon;
if (item.iosIcon != null) {
itemIcon = CNSymbol(item.iosIcon!, size: item.iconSize ?? 18);
} else if (item.iconData != null) {
// Try to map Material icon to SF Symbol
final sfSymbol = _mapIconToSFSymbol(item.iconData);
if (sfSymbol != null) {
itemIcon = CNSymbol(sfSymbol, size: item.iconSize ?? 18);
}
}
return CNPopupMenuItem(
label: item.label,
icon: itemIcon,
enabled: item.enabled,
);
}).toList();
if (_usePopupMenuButton) {
return CNNavigationBarAction.popupMenuButton(
icon: icon,
label: label,
popupMenuItems: cnItems,
onPopupMenuSelected: onPopupMenuSelected!,
tint: tint,
padding: padding,
labelSize: labelSize,
iconSize: iconSize,
badgeValue: badgeValue,
badgeColor: badgeColor,
);
} else {
return CNNavigationBarAction.popupMenu(
icon: icon,
label: label,
popupMenuItems: cnItems,
onPopupMenuSelected: onPopupMenuSelected!,
tint: tint,
padding: padding,
labelSize: labelSize,
iconSize: iconSize,
badgeValue: badgeValue,
badgeColor: badgeColor,
);
}
}
// Image action
if (_isImageAction) {
return CNNavigationBarAction(
imageAsset: _iosImage ?? _materialImage,
label: label,
onPressed: onPressed,
tint: tint,
padding: padding,
labelSize: labelSize,
iconSize: iconSize,
badgeValue: badgeValue,
badgeColor: badgeColor,
);
}
// Regular action
return CNNavigationBarAction(
icon: icon,
label: label,
onPressed: onPressed,
tint: tint,
padding: padding,
labelSize: labelSize,
iconSize: iconSize,
badgeValue: badgeValue,
badgeColor: badgeColor,
);
}