forked from flutter/plugins
/
DartMessenger.java
51 lines (43 loc) · 1.4 KB
/
DartMessenger.java
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
package io.flutter.plugins.camera;
import android.text.TextUtils;
import androidx.annotation.Nullable;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.EventChannel;
import java.util.HashMap;
import java.util.Map;
class DartMessenger {
@Nullable private EventChannel.EventSink eventSink;
enum EventType {
ERROR,
CAMERA_CLOSING,
}
DartMessenger(BinaryMessenger messenger, long eventChannelId) {
new EventChannel(messenger, "flutter.io/cameraPlugin/cameraEvents" + eventChannelId)
.setStreamHandler(
new EventChannel.StreamHandler() {
@Override
public void onListen(Object arguments, EventChannel.EventSink sink) {
eventSink = sink;
}
@Override
public void onCancel(Object arguments) {
eventSink = null;
}
});
}
void sendCameraClosingEvent() {
send(EventType.CAMERA_CLOSING, null);
}
void send(EventType eventType, @Nullable String description) {
if (eventSink == null) {
return;
}
Map<String, String> event = new HashMap<>();
event.put("eventType", eventType.toString().toLowerCase());
// Only errors have a description.
if (eventType == EventType.ERROR && !TextUtils.isEmpty(description)) {
event.put("errorDescription", description);
}
eventSink.success(event);
}
}