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,
  );
}