最近在搞flutter项目,开发的时候发现使用自带的print函数在打印的时候日志显示不全,找到一个不错的日志打印工具类记录一下方便查找
import 'package:flutter/cupertino.dart';
class LogUtil {
static var _separator = "=";
static var _split =
"$_separator$_separator$_separator$_separator$_separator$_separator$_separator$_separator$_separator";
static var _title = "Yl-Log";
static var _isDebug = true;
static int _limitLength = 800;
static String _startLine = "$_split$_title$_split";
static String _endLine = "$_split$_separator$_separator$_separator$_split";
static void init({String title, @required bool isDebug,int limitLength}) {
_title = title;
_isDebug = isDebug;
_limitLength = limitLength??=_limitLength;
_startLine = "$_split$_title$_split";
var endLineStr = StringBuffer();
var cnCharReg = RegExp("[\u4e00-\u9fa5]");
for (int i = 0; i < _startLine.length; i++) {
if (cnCharReg.stringMatch(_startLine[i]) != null) {
endLineStr.write(_separator);
}
endLineStr.write(_separator);
}
_endLine = endLineStr.toString();
}
//仅Debug模式可见
static void d(dynamic obj) {
if (_isDebug) {
_log(obj.toString());
}
}
static void v(dynamic obj) {
_log(obj.toString());
}
static void _log(String msg) {
print("$_startLine");
_logEmpyLine();
if(msg.length<_limitLength){
print(msg);
}else{
segmentationLog(msg);
}
_logEmpyLine();
print("$_endLine");
}
static void segmentationLog(String msg) {
var outStr = StringBuffer();
for (var index = 0; index < msg.length; index++) {
outStr.write(msg[index]);
if (index % _limitLength == 0 && index!=0) {
print(outStr);
outStr.clear();
var lastIndex = index+1;
if(msg.length-lastIndex<_limitLength){
var remainderStr = msg.substring(lastIndex,msg.length);
print(remainderStr);
break;
}
}
}
}
static void _logEmpyLine(){
print("");
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)