logs function

void logs(
  1. dynamic msg, {
  2. LogMode mode = LogMode.debug,
})

控制台输出 移动端

Implementation

void logs(dynamic msg, {LogMode mode = LogMode.debug}) {
  if (kReleaseMode) {
    // release模式不打印
    return;
  }
  var chain = Chain.current(); // Chain.forTrace(StackTrace.current);
  // 将 core 和 flutter 包的堆栈合起来(即相关数据只剩其中一条)
  chain =
      chain.foldFrames((frame) => frame.isCore || frame.package == "flutter");
  // 取出所有信息帧
  final frames = chain.toTrace().frames;
  // 找到当前函数的信息帧
  final idx = frames.indexWhere((element) => element.member == "logs");
  if (idx == -1 || idx + 1 >= frames.length) {
    return;
  }
  // 调用当前函数的函数信息帧
  final frame = frames[idx + 1];

  var modeStr = "";
  switch (mode) {
    case LogMode.debug:
      modeStr = "💙";
      break;
    case LogMode.warning:
      modeStr = "💛";
      break;
    case LogMode.info:
      modeStr = "💚";
      break;
    case LogMode.error:
      modeStr = "❤️";
      break;
  }

  print(
      "${DateTime.now()} $modeStr ${frame.uri.toString().split("/").last}(${frame.line}) -> $msg");
}