buildByCupertinoNative method

  1. @override
Widget buildByCupertinoNative(
  1. BuildContext context
)

build on cupertino mode with native iOS components (cupertino_native package) This is called when baseParam.nativeIOS = true Default implementation falls back to buildByCupertino()

Implementation

@override
Widget buildByCupertinoNative(BuildContext context) {
  // Native iOS implementation using cupertino_native package
  // This provides true native iOS rendering with CNToolbar
  // Enabled when baseParam.nativeIOS = true
  // Convert our alignment to CNToolbarMiddleAlignment
  final alignment = _toCNToolbarAlignment(valueOf('middleAlignment', middleAlignment));

  // Convert BaseToolbarAction to CNToolbarAction for iOS
  final leadingActions = valueOf('leading', leading);
  final middleActions = valueOf('middle', middle);
  final trailingActions = valueOf('trailing', trailing);

  List<CNToolbarAction>? cnLeading;
  List<CNToolbarAction>? cnMiddle;
  List<CNToolbarAction>? cnTrailing;

  if (leadingActions != null) {
    cnLeading = (leadingActions as List).map((action) => (action as BaseToolbarAction).toCNToolbarAction()).toList();
  }

  if (middleActions != null) {
    cnMiddle = (middleActions as List).map((action) => (action as BaseToolbarAction).toCNToolbarAction()).toList();
  }

  if (trailingActions != null) {
    cnTrailing = (trailingActions as List).map((action) => (action as BaseToolbarAction).toCNToolbarAction()).toList();
  }

  // Check if this is a search toolbar
  final searchConf = valueOf('searchConfig', searchConfig);
  if (searchConf != null) {
    return CNToolbar.search(
      leading: cnLeading,
      trailing: cnTrailing,
      searchConfig: searchConf,
      contextIcon: valueOf('contextIcon', contextIcon),
      tint: valueOf('tint', tint),
      transparent: valueOf('transparent', transparent),
      height: valueOf('height', height),
      pillHeight: valueOf('pillHeight', pillHeight),
    );
  }

  return CNToolbar(
    leading: cnLeading,
    middle: cnMiddle,
    trailing: cnTrailing,
    tint: valueOf('tint', tint),
    transparent: valueOf('transparent', transparent),
    height: valueOf('height', height),
    pillHeight: valueOf('pillHeight', pillHeight),
    middleAlignment: alignment,
  );
}