toCNToolbarAction method
CNToolbarAction
toCNToolbarAction()
Convert to CNToolbarAction for iOS implementation
Implementation
CNToolbarAction toCNToolbarAction() {
if (_isFixedSpace) {
return CNToolbarAction.fixedSpace(_spaceWidth ?? 8);
}
if (_isFlexibleSpace) {
return CNToolbarAction.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 CNToolbarAction.popupMenuButton(
icon: icon,
label: label,
popupMenuItems: cnItems,
onPopupMenuSelected: onPopupMenuSelected!,
tint: tint,
padding: padding,
labelSize: labelSize,
iconSize: iconSize,
badgeValue: badgeValue,
badgeColor: badgeColor,
);
} else {
return CNToolbarAction.popupMenu(
icon: icon,
label: label,
popupMenuItems: cnItems,
onPopupMenuSelected: onPopupMenuSelected!,
tint: tint,
padding: padding,
labelSize: labelSize,
iconSize: iconSize,
badgeValue: badgeValue,
badgeColor: badgeColor,
);
}
}
// Regular action
return CNToolbarAction(
icon: icon,
label: label,
onPressed: onPressed,
tint: tint,
padding: padding,
labelSize: labelSize,
iconSize: iconSize,
badgeValue: badgeValue,
badgeColor: badgeColor,
);
}