tcicMxloggerIsolateEntry function

void tcicMxloggerIsolateEntry(
  1. List args
)

mxlogger 后台写入 isolate entry。

args: loggerKey, ..., handshakeSendPort

Implementation

@pragma('vm:entry-point')
void tcicMxloggerIsolateEntry(List<dynamic> args) {
  if (args.isEmpty || args.last is! SendPort) return;
  final String loggerKey =
      (args.isNotEmpty && args.first is String) ? (args.first as String) : '';
  final SendPort mainSendPort = args.last as SendPort;

  final ReceivePort isolatePort = ReceivePort();
  mainSendPort.send(isolatePort.sendPort);

  isolatePort.listen((dynamic msg) {
    if (msg is List && msg.length >= 4) {
      final int lvl = msg[0] as int; // 0:debug 1:info
      final String text = msg[1] as String;
      final String? name = msg[2] as String?;
      final String? tag = msg[3] as String?;
      // 这里使用 loggerKey + 静态方法写入,避免 isolate 中走 initialize/MethodChannel
      mx.MXLogger.logLoggerKey(loggerKey, lvl, text, name: name, tag: tag);
    }
  });
}