如何在flutter中将带有彩色文本的print()调用到android studio控制台

时间:2019-01-03 07:30:34

标签: colors dart flutter

我需要一个带有彩色字符串的调试输出。就像node.js粉笔一样。

我试图找到包装,但没有合适的包装。

谢谢。

6 个答案:

答案 0 :(得分:9)

虽然这在 Android Studio 中不起作用,但它是 supported in VS Code

enter image description here

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 转义码说明

如果您不熟悉 ANSI 转义码字符串的格式,会非常混乱。

enter image description here

这是将 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会话。 使用此终端记录日志。调试标签,用于其他功能。

Preview

答案 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的默认表情符号字体的某些发行版在默认情况下不是彩色的,您可能首先要使其彩色。