diff --git a/android/src/main/java/com/rmawatson/flutterisolate/FlutterIsolatePlugin.java b/android/src/main/java/com/rmawatson/flutterisolate/FlutterIsolatePlugin.java index 30a57bc..7ae7acf 100644 --- a/android/src/main/java/com/rmawatson/flutterisolate/FlutterIsolatePlugin.java +++ b/android/src/main/java/com/rmawatson/flutterisolate/FlutterIsolatePlugin.java @@ -138,14 +138,17 @@ private void startNextIsolate() { @Override public void onListen(Object o, EventChannel.EventSink sink) { - IsolateHolder isolate = queuedIsolates.remove(); - sink.success(isolate.isolateId); - sink.endOfStream(); - activeIsolates.put(isolate.isolateId, isolate); - - isolate.result.success(null); - isolate.startupChannel = null; - isolate.result = null; + if (queuedIsolates.size() != 0) { + IsolateHolder isolate = queuedIsolates.remove(); + + sink.success(isolate.isolateId); + sink.endOfStream(); + activeIsolates.put(isolate.isolateId, isolate); + + isolate.result.success(null); + isolate.startupChannel = null; + isolate.result = null; + } if (queuedIsolates.size() != 0) { startNextIsolate(); diff --git a/ios/Classes/FlutterIsolatePlugin.m b/ios/Classes/FlutterIsolatePlugin.m index fc36f41..54e731b 100644 --- a/ios/Classes/FlutterIsolatePlugin.m +++ b/ios/Classes/FlutterIsolatePlugin.m @@ -143,14 +143,16 @@ - (FlutterError*)onListenWithArguments:(id)arguments eventSink:(FlutterEventSink IsolateHolder* isolate = _queuedIsolates.firstObject; - sink(isolate.isolateId); - sink(FlutterEndOfEventStream); - _activeIsolates[isolate.isolateId] = isolate; - [_queuedIsolates removeObject:isolate]; - - isolate.result(@(YES)); - isolate.startupChannel = nil; - isolate.result = nil; + if (isolate != nil) { + sink(isolate.isolateId); + sink(FlutterEndOfEventStream); + _activeIsolates[isolate.isolateId] = isolate; + [_queuedIsolates removeObject:isolate]; + + isolate.result(@(YES)); + isolate.startupChannel = nil; + isolate.result = nil; + } if (_queuedIsolates.count != 0) [self startNextIsolate];