我正在尝试构建一个Flutter应用程序并在此过程中学习Dart,但是在调试时我会感到很沮丧.我从API中获取了一个资源,现在我想将JSON字符串打印到控制台,但它一直在切断字符串.
所以我实际上有两个问题:终端控制台真的是打印调试消息的唯一方法吗?如何在没有自动切断的情况下将大字符串打印到控制台?
Sis*_*sir 89
如何使用dart: developer库中的 Flutter 日志。这似乎没有像print()或那样的最大长度限制debugPrint()。这是似乎工作正常的唯一解决方案。尝试如下:
log(reallyReallyLongText)
Run Code Online (Sandbox Code Playgroud)
输出将是没有中断的整个长字符串,并以 [log]
Cop*_*oad 37
您可以制作自己的印刷品。定义这个方法
void printWrapped(String text) {
final pattern = RegExp('.{1,800}'); // 800 is the size of each chunk
pattern.allMatches(text).forEach((match) => print(match.group(0)));
}
Run Code Online (Sandbox Code Playgroud)
使用它就像
printWrapped("Your very long string ...");
Run Code Online (Sandbox Code Playgroud)
Bis*_*ing 15
目前 dart 不支持打印超过 1020 个字符的日志(通过尝试发现)。
所以,我想出了这个方法来打印长日志:
static void LogPrint(Object object) async {
int defaultPrintLength = 1020;
if (object == null || object.toString().length <= defaultPrintLength) {
print(object);
} else {
String log = object.toString();
int start = 0;
int endIndex = defaultPrintLength;
int logLength = log.length;
int tmpLogLength = log.length;
while (endIndex < logLength) {
print(log.substring(start, endIndex));
endIndex += defaultPrintLength;
start += defaultPrintLength;
tmpLogLength -= defaultPrintLength;
}
if (tmpLogLength > 0) {
print(log.substring(start, logLength));
}
}
}
Run Code Online (Sandbox Code Playgroud)
jes*_*nte 13
使用带有可选参数的 debugPrint 根据平台的输出限制进行换行。
debugPrint(someSuperLongString, wrapWidth: 1024);
Run Code Online (Sandbox Code Playgroud)
这是基于@CopsOnRoad的答案的一行,您可以快速复制和粘贴(例如:当您想稍微修改代码并记录一些数据并暂时查看时):
void printWrapped(String text) => RegExp('.{1,800}').allMatches(text).map((m) => m.group(0)).forEach(print);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4837 次 |
| 最近记录: |