Add macOS support (#23)

* Add macOS support

* Update README

* Update to v0.2.0

* Document breaking changes

* Delete widget tests
This commit is contained in:
Ben Hagen
2025-05-13 16:24:58 +02:00
committed by GitHub
parent c391cc5f26
commit abe519dae7
103 changed files with 3444 additions and 169 deletions
@@ -0,0 +1,43 @@
#if os(iOS)
import Flutter
#elseif os(macOS)
import FlutterMacOS
#endif
import MultipeerConnectivity
class ConnectedDeviceStreamHandler: NSObject, FlutterStreamHandler {
private var eventSink: FlutterEventSink?
private var timer : Timer?
func onListen(withArguments arguments: Any?, eventSink: @escaping FlutterEventSink) -> FlutterError? {
let deviceId = arguments as! String
self.eventSink = eventSink
startSendingUpdates(deviceId: deviceId)
return nil
}
func onCancel(withArguments arguments: Any?) -> FlutterError? {
stopSendingUpdates()
eventSink = nil
return nil
}
func startSendingUpdates(deviceId:String) {
self.timer = Timer.scheduledTimer(withTimeInterval: 2.0, repeats: true) { [weak self] _ in
guard let self = self else { return }
var result: String?
if let device = NearbyDevicesStore.instance.find(for: deviceId),
let session = device.session {
if (session.state == MCSessionState.connected) {
result = device.toDartFormat()
}
}
self.eventSink?(result)
}
}
func stopSendingUpdates() {
self.timer?.invalidate()
self.timer = nil
}
}