flutter 打印所在行和行号

在开发flutter过程中难免会使用打印函数,为此我自己封装了一个函数,方便打印当前所在文件名和所在的行号;
直接上代码:

代码如下:


import 'package:flutter/foundation.dart';

void fLog(Object message, StackTrace trace) {
  if (kDebugMode) {
    //
    FCustomTrace programInfo = FCustomTrace(trace);
    if (programInfo != null &&
        programInfo.fileName != null &&
        programInfo.lineNumber != null) {
      print(
          "所在文件: ${programInfo.fileName}, 所在行: ${programInfo.lineNumber}, 打印信息: $message");
    } else {
      print("打印内容:$message");
    }
  } else if (kReleaseMode) {
    print("----ReleaseMode-------");
  } else if (kProfileMode) {
    print("----ProfileMode-------");
  }
}

class FCustomTrace {
  final StackTrace _trace;

  String fileName;
  int lineNumber;
  int columnNumber;

  FCustomTrace(this._trace) {
    _parseTrace();
  }

  void _parseTrace() {
    var traceString = this._trace.toString().split("\n")[0];
    var indexOfFileName = traceString.indexOf(RegExp(r'[A-Za-z_]+.dart'));
    var fileInfo = traceString.substring(indexOfFileName);
    var listOfInfos = fileInfo.split(":");
    //print('-----listOfInfos--===== $listOfInfos  -------=====');
    this.fileName = listOfInfos[0];
    this.lineNumber = int.parse(listOfInfos[1]);
    var columnStr = listOfInfos[2];
    columnStr = columnStr.replaceFirst(")", "");
    this.columnNumber = int.parse(columnStr);
  }
}

使用方式如下:

fLog("message", StackTrace.current);

如果需要请带走吧~

你可能感兴趣的:(flutter 打印所在行和行号)