iosPackageSwiftContent function

String iosPackageSwiftContent(
  1. String pluginName,
  2. String className
)

Flutter 3.41+ SPM Package.swift for the iOS platform.

Creates two targets:

  • ${className}Cpp — C++ bridge (compiled as Obj-C++ via .mm forwarder)
  • $pluginName — Swift bridge (depends on the C++ target)

Implementation

String iosPackageSwiftContent(String pluginName, String className) =>
    '// swift-tools-version: 5.9\n'
    'import PackageDescription\n'
    '\n'
    'let package = Package(\n'
    '  name: "$pluginName",\n'
    '  platforms: [.iOS(.v13)],\n'
    '  products: [\n'
    '    .library(name: "${pluginName.replaceAll('_', '-')}", targets: ["$pluginName"])\n'
    '  ],\n'
    '  targets: [\n'
    '    .target(\n'
    '      name: "${className}Cpp",\n'
    '      path: "Sources/${className}Cpp",\n'
    '      publicHeadersPath: "include",\n'
    '      cxxSettings: [\n'
    '        .headerSearchPath("include"),\n'
    '        .unsafeFlags(["-std=c++17"])\n'
    '      ]\n'
    '    ),\n'
    '    .target(\n'
    '      name: "$pluginName",\n'
    '      dependencies: ["${className}Cpp"],\n'
    '      path: "Sources/$className"\n'
    '    )\n'
    '  ]\n'
    ')\n';