From 766cc7e9688ffec42cf2bdd2871fd2fa0e9b59d9 Mon Sep 17 00:00:00 2001 From: Vitor Maciel <710828+vitormf@users.noreply.github.com> Date: Thu, 21 May 2026 19:38:20 +0100 Subject: [PATCH] feat: add Swift Package Manager support for macOS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add Package.swift at macos/ pointing at the existing Classes/ directory so Flutter 3.24+ can build this plugin via SPM. CocoaPods builds are unaffected — no files moved, no podspec changes. The only change to existing code is an explicit `import AppKit` in TrayIcon.swift — required under SPM's stricter module resolution (unlike CocoaPods, SPM does not implicitly import frameworks via DEFINES_MODULE). --- .gitignore | 1 + .../tray_manager/macos/tray_manager.podspec | 2 +- .../{ => tray_manager}/Classes/TrayIcon.swift | 2 ++ .../Classes/TrayManagerPlugin.swift | 0 .../{ => tray_manager}/Classes/TrayMenu.swift | 0 .../macos/tray_manager/Package.swift | 22 +++++++++++++++++++ 6 files changed, 26 insertions(+), 1 deletion(-) rename packages/tray_manager/macos/{ => tray_manager}/Classes/TrayIcon.swift (99%) rename packages/tray_manager/macos/{ => tray_manager}/Classes/TrayManagerPlugin.swift (100%) rename packages/tray_manager/macos/{ => tray_manager}/Classes/TrayMenu.swift (100%) create mode 100644 packages/tray_manager/macos/tray_manager/Package.swift diff --git a/.gitignore b/.gitignore index fa08f05..1e32e88 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ *.iml pubspec_overrides.yaml pubspec.lock +**/macos/.build/ diff --git a/packages/tray_manager/macos/tray_manager.podspec b/packages/tray_manager/macos/tray_manager.podspec index 321ea17..5fae185 100644 --- a/packages/tray_manager/macos/tray_manager.podspec +++ b/packages/tray_manager/macos/tray_manager.podspec @@ -13,7 +13,7 @@ A new flutter plugin project. s.license = { :file => '../LICENSE' } s.author = { 'Your Company' => 'email@example.com' } s.source = { :path => '.' } - s.source_files = 'Classes/**/*' + s.source_files = 'tray_manager/Classes/**/*' s.dependency 'FlutterMacOS' s.platform = :osx, '10.11' diff --git a/packages/tray_manager/macos/Classes/TrayIcon.swift b/packages/tray_manager/macos/tray_manager/Classes/TrayIcon.swift similarity index 99% rename from packages/tray_manager/macos/Classes/TrayIcon.swift rename to packages/tray_manager/macos/tray_manager/Classes/TrayIcon.swift index 5d939a4..75645a1 100644 --- a/packages/tray_manager/macos/Classes/TrayIcon.swift +++ b/packages/tray_manager/macos/tray_manager/Classes/TrayIcon.swift @@ -5,6 +5,8 @@ // Created by Lijy91 on 2022/5/15. // +import AppKit + public class TrayIcon: NSView { public var onTrayIconMouseDown:(() -> Void)? public var onTrayIconMouseUp:(() -> Void)? diff --git a/packages/tray_manager/macos/Classes/TrayManagerPlugin.swift b/packages/tray_manager/macos/tray_manager/Classes/TrayManagerPlugin.swift similarity index 100% rename from packages/tray_manager/macos/Classes/TrayManagerPlugin.swift rename to packages/tray_manager/macos/tray_manager/Classes/TrayManagerPlugin.swift diff --git a/packages/tray_manager/macos/Classes/TrayMenu.swift b/packages/tray_manager/macos/tray_manager/Classes/TrayMenu.swift similarity index 100% rename from packages/tray_manager/macos/Classes/TrayMenu.swift rename to packages/tray_manager/macos/tray_manager/Classes/TrayMenu.swift diff --git a/packages/tray_manager/macos/tray_manager/Package.swift b/packages/tray_manager/macos/tray_manager/Package.swift new file mode 100644 index 0000000..7080729 --- /dev/null +++ b/packages/tray_manager/macos/tray_manager/Package.swift @@ -0,0 +1,22 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "tray_manager", + platforms: [ + .macOS("10.14") + ], + products: [ + .library(name: "tray-manager", targets: ["tray_manager"]) + ], + dependencies: [], + targets: [ + .target( + name: "tray_manager", + dependencies: [], + path: "Classes" + ) + ] +)