Skip to content

Commit 37adcf8

Browse files
authored
Merge pull request #78 from joachimvalente/patch-1
fix onListen for 0 queued isolates
2 parents 79905e9 + a4c84d0 commit 37adcf8

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed

android/src/main/java/com/rmawatson/flutterisolate/FlutterIsolatePlugin.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -138,14 +138,17 @@ private void startNextIsolate() {
138138

139139
@Override
140140
public void onListen(Object o, EventChannel.EventSink sink) {
141-
IsolateHolder isolate = queuedIsolates.remove();
142-
sink.success(isolate.isolateId);
143-
sink.endOfStream();
144-
activeIsolates.put(isolate.isolateId, isolate);
145-
146-
isolate.result.success(null);
147-
isolate.startupChannel = null;
148-
isolate.result = null;
141+
if (queuedIsolates.size() != 0) {
142+
IsolateHolder isolate = queuedIsolates.remove();
143+
144+
sink.success(isolate.isolateId);
145+
sink.endOfStream();
146+
activeIsolates.put(isolate.isolateId, isolate);
147+
148+
isolate.result.success(null);
149+
isolate.startupChannel = null;
150+
isolate.result = null;
151+
}
149152

150153
if (queuedIsolates.size() != 0) {
151154
startNextIsolate();

ios/Classes/FlutterIsolatePlugin.m

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -143,14 +143,16 @@ - (FlutterError*)onListenWithArguments:(id)arguments eventSink:(FlutterEventSink
143143

144144
IsolateHolder* isolate = _queuedIsolates.firstObject;
145145

146-
sink(isolate.isolateId);
147-
sink(FlutterEndOfEventStream);
148-
_activeIsolates[isolate.isolateId] = isolate;
149-
[_queuedIsolates removeObject:isolate];
150-
151-
isolate.result(@(YES));
152-
isolate.startupChannel = nil;
153-
isolate.result = nil;
146+
if (isolate != nil) {
147+
sink(isolate.isolateId);
148+
sink(FlutterEndOfEventStream);
149+
_activeIsolates[isolate.isolateId] = isolate;
150+
[_queuedIsolates removeObject:isolate];
151+
152+
isolate.result(@(YES));
153+
isolate.startupChannel = nil;
154+
isolate.result = nil;
155+
}
154156

155157
if (_queuedIsolates.count != 0)
156158
[self startNextIsolate];

0 commit comments

Comments
 (0)