From 71f2bb5e1ed53f8c59be6b280501de3b2aa70b81 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 22 Aug 2026 14:25:59 +0000 Subject: [PATCH 1/3] Remove unsafe nonisolated construct in plugin registration Remove nonisolated(unsafe) opt-out for plugin registrar, ensuring registration occurs strictly within MainActor isolation. Co-authored-by: esenmx <43244505+esenmx@users.noreply.github.com> --- .../mapkit_flutter/Sources/mapkit_flutter/MapKitPlugin.swift | 3 --- 1 file changed, 3 deletions(-) diff --git a/darwin/mapkit_flutter/Sources/mapkit_flutter/MapKitPlugin.swift b/darwin/mapkit_flutter/Sources/mapkit_flutter/MapKitPlugin.swift index 2860037..b339eea 100644 --- a/darwin/mapkit_flutter/Sources/mapkit_flutter/MapKitPlugin.swift +++ b/darwin/mapkit_flutter/Sources/mapkit_flutter/MapKitPlugin.swift @@ -15,9 +15,6 @@ public final class MapKitPlugin: NSObject, FlutterPlugin { // Plugin registration runs on the main thread; the factory and view // host are main-actor isolated. macOS's GeneratedPluginRegistrant // calls this from a nonisolated context, so assume isolation here. - // The registrar hand-off shares that guarantee: it never leaves the - // main thread, it just isn't Sendable-provable. - nonisolated(unsafe) let registrar = registrar MainActor.assumeIsolated { let factory = MapKitViewFactory(withRegistrar: registrar) #if os(iOS) From 06c4897060e2c7faad78b6efcaaf3c145e935502 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 22 Aug 2026 14:35:19 +0000 Subject: [PATCH 2/3] Remove unsafe nonisolated construct in plugin registration Fix Swift 6 data race compiler error and remove nonisolated(unsafe) opt-out by ensuring register(with:) inherits @MainActor isolation from MapKitPlugin without assumeIsolated boundary crossing. Co-authored-by: esenmx <43244505+esenmx@users.noreply.github.com> --- .../Sources/mapkit_flutter/MapKitPlugin.swift | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/darwin/mapkit_flutter/Sources/mapkit_flutter/MapKitPlugin.swift b/darwin/mapkit_flutter/Sources/mapkit_flutter/MapKitPlugin.swift index b339eea..fa0bcad 100644 --- a/darwin/mapkit_flutter/Sources/mapkit_flutter/MapKitPlugin.swift +++ b/darwin/mapkit_flutter/Sources/mapkit_flutter/MapKitPlugin.swift @@ -11,21 +11,16 @@ import AppKit public final class MapKitPlugin: NSObject, FlutterPlugin { private static let viewType = "dev.mapkit.flutter/map_view" - public nonisolated static func register(with registrar: FlutterPluginRegistrar) { - // Plugin registration runs on the main thread; the factory and view - // host are main-actor isolated. macOS's GeneratedPluginRegistrant - // calls this from a nonisolated context, so assume isolation here. - MainActor.assumeIsolated { - let factory = MapKitViewFactory(withRegistrar: registrar) - #if os(iOS) - registrar.register( - factory, - withId: viewType, - gestureRecognizersBlockingPolicy: FlutterPlatformViewGestureRecognizersBlockingPolicyWaitUntilTouchesEnded - ) - #elseif os(macOS) - registrar.register(factory, withId: viewType) - #endif - } + public static func register(with registrar: FlutterPluginRegistrar) { + let factory = MapKitViewFactory(withRegistrar: registrar) + #if os(iOS) + registrar.register( + factory, + withId: viewType, + gestureRecognizersBlockingPolicy: FlutterPlatformViewGestureRecognizersBlockingPolicyWaitUntilTouchesEnded + ) + #elseif os(macOS) + registrar.register(factory, withId: viewType) + #endif } } From e59a86887570bb1b03d1b86dbc45a2de15432ea2 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 22 Aug 2026 14:41:51 +0000 Subject: [PATCH 3/3] Remove unsafe nonisolated construct in plugin registration Use @preconcurrency FlutterPlugin protocol conformance so register(with:) inherits @MainActor isolation cleanly without nonisolated(unsafe) or MainActor.assumeIsolated. Co-authored-by: esenmx <43244505+esenmx@users.noreply.github.com> --- darwin/mapkit_flutter/Sources/mapkit_flutter/MapKitPlugin.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/darwin/mapkit_flutter/Sources/mapkit_flutter/MapKitPlugin.swift b/darwin/mapkit_flutter/Sources/mapkit_flutter/MapKitPlugin.swift index fa0bcad..1d7ed2a 100644 --- a/darwin/mapkit_flutter/Sources/mapkit_flutter/MapKitPlugin.swift +++ b/darwin/mapkit_flutter/Sources/mapkit_flutter/MapKitPlugin.swift @@ -8,7 +8,7 @@ import AppKit @objc(MapKitPlugin) @MainActor -public final class MapKitPlugin: NSObject, FlutterPlugin { +public final class MapKitPlugin: NSObject, @preconcurrency FlutterPlugin { private static let viewType = "dev.mapkit.flutter/map_view" public static func register(with registrar: FlutterPluginRegistrar) {