Files
nearby_service/darwin/Classes/StreamHandler/ConnectedDeviceStreamHandler.swift
T
Ben Hagen abe519dae7 Add macOS support (#23)
* Add macOS support

* Update README

* Update to v0.2.0

* Document breaking changes

* Delete widget tests
2025-05-13 16:24:58 +02:00

44 lines
1.3 KiB
Swift

#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
}
}