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