相信大家在开发 flutter 应用的时候会用到日志打印,如果需要快速定位到日志发生的代码位置,就需要获取发生日志的文件路径以及代码行数,下列工具类可以帮大家解决这个问题
import 'package:flutter/foundation.dart';
class Logger {
static void log(String message) {
if (kDebugMode) {
print(_formatLogMessage(message));
}
}
static String _formatLogMessage(String message) {
final stackTrace = StackTrace.current;
final frames = stackTrace.toString().split('\n');
if (frames.length > 2) {
final frame = frames[2];
final match = RegExp(r'#2\s+(.+)\s+((.+):(\d+):\d+)').firstMatch(frame);
if (match != null) {
final fileName = match.group(2);
int start = fileName?.indexOf('/')??-1;
final lineNumber = match.group(3);
return '[${fileName?.substring(start)}:$lineNumber] $message';
}
}
return message;
}
}