AMapFlutterStreamManager.m
1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//
// AMapFlutterStreamManager.m
// amap_location_flutter_plugin
//
// Created by ldj on 2018/10/30.
//
#import "AMapFlutterStreamManager.h"
/**
* 高德Flutter流管理器实现类
* 负责管理Flutter与原生端之间的事件流通信
*/
@implementation AMapFlutterStreamManager
/**
* 获取共享实例
* 使用单例模式确保全局只有一个流管理器实例
* @return 流管理器的单例对象
*/
+ (instancetype)sharedInstance {
static dispatch_once_t onceToken;
static AMapFlutterStreamManager *manager = nil;
dispatch_once(&onceToken, ^{
manager = [[AMapFlutterStreamManager alloc] init];
AMapFlutterStreamHandler * streamHandler = [[AMapFlutterStreamHandler alloc] init];
manager.streamHandler = streamHandler;
});
return manager;
}
@end
/**
* 高德Flutter流处理器实现类
* 负责处理Flutter端的事件监听和取消监听
*/
@implementation AMapFlutterStreamHandler
/**
* 当Flutter端开始监听事件流时调用
* 保存事件接收器以便后续发送事件
* @param arguments Flutter端传递的参数
* @param eventSink 事件接收器,用于向Flutter端发送事件
* @return 错误对象,如果没有错误返回nil
*/
- (FlutterError*)onListenWithArguments:(id)arguments eventSink:(FlutterEventSink)eventSink {
self.eventSink = eventSink;
return nil;
}
/**
* 当Flutter端取消监听事件流时调用
* 清除事件接收器
* @param arguments Flutter端传递的参数
* @return 错误对象,如果没有错误返回nil
*/
- (FlutterError*)onCancelWithArguments:(id)arguments {
self.eventSink = nil;
return nil;
}
@end