Can anyone tell me whats wrong in this code?
void onPressed() async {
//Navigator.pushNamed(context, "/screen2", arguments: []);
var receivePort = ReceivePort();
await Isolate.spawn(gotoNext, [receivePort.sendPort]);
final msg = await receivePort.first;
print(msg);
}
void gotoNext(List<dynamic> args) {
SendPort sendPort = args[0];
log(args.toString());
Isolate.exit(sendPort, "OK");
}
E/flutter (12062): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: Invalid argument(s): Illegal argument in isolate message: (object extends NativeWrapper - Library:'dart:ui' Class: Path)
CodePudding user response:
arg is List<dynamic> not List<SendPort> so code is not valid
SendPort sendPort = args[0];
please try, if arg[0] is SendPort:
void _readAndParseJson(List<dynamic> args) async {
SendPort? responsePort;
final dynamic _responsePort = args[0];
if (_responsePort != null && _responsePort is SendPort) {
responsePort = _responsePort;
}
String? fileName;
final dynamic _fileName = args[1];
if (_fileName != null && _fileName is String) {
fileName = _fileName;
}
final fileData = await File(fileName).readAsString();
final result = jsonDecode(fileData) as Map<String, dynamic>;
Isolate.exit(responsePort, result);
}
CodePudding user response:
I had the same issue today. Turns out the code was not supposed to run inside a widget class, the examples use them outside. Let me know how it goes.