You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter如何完整打印大容量Uint8List的全部内容

完整打印长Uint8List全部内容的实现方法

Dart环境下默认对长列表、长字符串的print输出做了截断处理,超过阈值的内容会被<...>符号省略,可通过以下几种方案实现全量输出:

  • 分块打印(兼容性最好,适配所有控制台长度限制)
    大部分IDE、命令行控制台本身存在单条日志的长度上限,就算绕过代码层面的截断,单条输出过长仍会被控制台吞掉,分块打印是最稳妥的方案:
    // 目标Uint8List替换为你的实际变量名
    final Uint8List targetData = yourUint8List;
    // 单块大小可根据控制台阈值调整,一般设为1024-2048即可
    const int blockSize = 1024;
    for (int i = 0; i < targetData.length; i += blockSize) {
      final int endPos = (i + blockSize < targetData.length) ? i + blockSize : targetData.length;
      print(targetData.sublist(i, endPos));
    }
    
    如果需要输出连续的字节数值,可先将列表拼接为字符串再分块输出:
    final String fullContent = targetData.join(', ');
    print(fullContent); // 若仍被截断就对fullContent做分块切割后打印
    
  • 转换为对应编码的文本内容输出
    如果你核查内容是为了看二进制对应的明文信息,可直接解码为字符串输出,不会触发列表的默认截断逻辑:
    import 'dart:convert';
    // 按数据实际编码替换即可,常见场景用utf8
    final String readableContent = utf8.decode(targetData, allowMalformed: true);
    print(readableContent);
    
  • 自定义扩展方法绕过列表默认toString截断
    给List写个扩展方法,手动拼接所有元素生成完整字符串,绕过原生的截断逻辑:
    extension FullListPrint on List {
      String toUnTruncatedString() {
        final StringBuffer buffer = StringBuffer('[');
        for (int i = 0; i < length; i++) {
          if (i != 0) buffer.write(', ');
          buffer.write(this[i]);
        }
        buffer.write(']');
        return buffer.toString();
      }
    }
    
    // 调用示例
    print(targetData.toUnTruncatedString());
    

提示:如果使用自定义toString方法后仍有内容被截断,是控制台本身的单条日志长度限制导致,直接切换为分块打印方案即可解决。

内容的提问来源于stack exchange,提问作者Salahuddin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 17:48:18