start<R> method
Start the isolate and return the value returned by callback
.
Implementation
Future<R> start<R>() async {
// Run and get result
resume();
final _result = await _completer.future;
if (_result == null) {
throw RemoteError('IsolateFlutter exited with null.', '');
}
if (_result is List<dynamic>) {
final _type = _result.length;
switch (_type) {
case 1:
return _result[0] as R;
case 2:
await Future<Never>.error(
RemoteError(_result[0] as String, _result[1] as String));
case 3:
await Future<Never>.error(
_result[0] as Object, _result[1] as StackTrace);
default:
throw RemoteError(
'IsolateFlutter exited without result or error.', '');
}
} else {
throw RemoteError('IsolateFlutter exited without result or error.', '');
}
}