Home > Software engineering >  Unhandled Exception: Invalid argument(s): Illegal argument in isolate message: (object extends Nativ
Unhandled Exception: Invalid argument(s): Illegal argument in isolate message: (object extends Nativ

Time:03-10

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.

  • Related