我需要一个带有彩色字符串的调试输出。就像node.js粉笔一样。
我试图找到包装,但没有合适的包装。
谢谢。
答案 0 :(得分:9)
虽然这在 Android Studio 中不起作用,但它是 supported in VS Code:
void main() {
print('This is a normal message.');
printWarning('This is a warning.');
printError('This is an error.');
}
void printWarning(String text) {
print('\x1B[33m$text\x1B[0m');
}
void printError(String text) {
print('\x1B[31m$text\x1B[0m');
}
如果您不熟悉 ANSI 转义码字符串的格式,会非常混乱。
这是将 Hello
变为红色的字符串:
\x1B[31mHello\x1B[0m
为了清晰起见,这里再次添加了空格:
\x1B [31m Hello \x1B [0m
含义:
\x1B
:ANSI 转义序列起始标记[31m
:红色的转义序列[0m
:用于重置的转义序列(停止使文本变为红色)这里是其他颜色:
Black: \x1B[30m
Red: \x1B[31m
Green: \x1B[32m
Yellow: \x1B[33m
Blue: \x1B[34m
Magenta: \x1B[35m
Cyan: \x1B[36m
White: \x1B[37m
Reset: \x1B[0m
通过以下链接了解更多信息:
答案 1 :(得分:6)
您需要打印转义序列以在终端输出中获得色彩效果。
另请参阅https://en.wikipedia.org/wiki/ANSI_escape_code
https://pub.dartlang.org/packages/ansicolor是一种Dart软件包,可简化此操作。
答案 2 :(得分:3)
如果您不想更改实际打印字符的方式,我建议使用Grep Console
您可以在日志中添加[DEBUG]
之类的标签,而grep控制台将为您带来魔力。
答案 3 :(得分:1)
当前,Dart控制台无法在Android Studio或IntelliJ Idea中解析ANSI颜色。 您可以通过调用
来检查ANSI颜色支持import dart.io as io
io.stdout.supportsAnsiEscapes
但是您可以在Android Studio中拥有丰富多彩的日志,只需在android studio中打开终端窗口并致电
flutter logs
此命令将当前终端会话附加到活动的flutter会话。 使用此终端记录日志。调试标签,用于其他功能。
答案 4 :(得分:0)
尽管文本着色可以在终端中完美地工作,但在IDE的调试输出中可能无法工作(我已经尝试过Idea / Android Studio和VSCode)。
使用以下代码的ANSI转义代码示例:
Map<String, Widget> mapByName;
Map<Integer, Widget> mapById;
使用DoubleMap<String, Integer, Widget> map = new DoubleMap<>();
Widget w = new Widget(3, "foo");
map.put(w.id, w.name, w);
map.get1(3); // returns w
map.get2("foo"); // returns w
软件包的示例:
print('\x1B[94m' + "hahAHaHA!!!" + '\x1B[0m');
PS来这里是为了在终端中找到一些有关文本着色的信息,而不是在IDE的调试输出中。因此,我决定在此处编写示例,不要创建带有答案的单独问题。
答案 5 :(得分:0)
您可以像在答案中提到的其他颜色那样为文本使用颜色,以使彩色文本具有背景或前景色。
但是您可以改用表情符号!例如,您可以将⚠️
用于警告消息,将?
用于错误消息。
或者只是将这些笔记本用作颜色:
?: error message
?: warning message
?: ok status message
?: action message
?: canceled status message
?: Or anything you like and want to recognize immediately by color
此方法还可以帮助您快速直接在源代码中直接扫描并查找日志。
但是Linux的默认表情符号字体的某些发行版在默认情况下不是彩色的,您可能首先要使其彩色。