【发布时间】:2021-06-28 21:01:03
【问题描述】:
我正在为针对 linux_x64 的 Flutter Desktop 编写一些代码。
我正在从一些应用程序中提取一些日志,这些日志呈现如下语法:
-
使用
less logfile检查日志文件ESC(BESC[mauthentication-msESC(BESC[m -
使用
less -r logfile检查日志文件我可以在终端中看到彩色文本。 -
使用
cat logfile检查日志文件我可以在终端中看到彩色文本。 -
使用
cat -vte logfile检查日志文件我明白了:^[(B^[[mauthentication-ms^[(B^[[m$ -
在 Flutter 中使用此代码
Future<String> readAsString = file.readAsString(); readAsString.then((String value) => _log = utf8.decode(value.runes.toList()));我在 SelectableText 小部件中获得此输出
(B[mauthentication-ms(B[m
我真的对这种行为感到困惑,所以如果有人对此有经验,欢迎提出建议!
有两种选择:
- 清理所有日志,可视化普通文本
- 尝试像
less -r那样解码文本,将彩色文本可视化到 Flutter 应用程序中。
编辑:
我解决了导入tint plugin:tint: ^2.0.0
并更改 Dart 代码(使用 tint 插件中的 strip() 方法)如下:
Future<String> readAsString = file.readAsString();
readAsString.then((String value) => _log = value.strip());
【问题讨论】:
-
我找不到更能说明问题的标题,如果您可以随意更改!
-
less和cat不解码文本,你的终端是。您需要做的是创建一个函数来遍历字符串并删除\x1b字符和字母之间的每个字符。
标签: linux flutter dart flutter-desktop