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

Flutter/Dart中如何打印自定义类实例的详细信息?

如何打印Map中CartItem实例的具体属性值?

这个问题我之前调试Dart代码的时候也遇到过——默认情况下,Dart类实例的toString()方法只会返回Instance of '类名',所以你打印_items的时候看不到具体属性。要实现你想要的JSON风格输出,有两种实用的解决方案:

方法一:重写CartItem的toString()方法

这是最直接的调试方案,只需要在CartItem类里重写toString(),把属性拼接成你想要的JSON格式字符串:

class CartItem {
  final String id;
  final String title;
  CartItem({ 
    required this.id, 
    required this.title, 
  });

  @override
  String toString() {
    // 直接返回JSON风格的字符串
    return '{"id": "$id", "title": "$title"}';
  }
}

现在再执行print(_items),输出就会变成:

{ p1: {"id": "你的id值", "title": "你的title值"}, p2: {"id": "另一个id", "title": "另一个title"} }

如果只是调试用,也可以写成更易读的格式,比如CartItem(id: $id, title: $title),看你需求调整就行。

方法二:将CartItem转为JSON结构输出

如果需要标准的JSON字符串(比如用于序列化、存储或网络传输),可以给CartItem添加一个toJson()方法,再结合dart:convert库的jsonEncode来处理:

首先引入依赖并修改类:

import 'dart:convert';

class CartItem {
  final String id;
  final String title;
  CartItem({ 
    required this.id, 
    required this.title, 
  });

  // 把实例转为可序列化的Map
  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'title': title,
    };
  }
}

然后处理你的_items并打印:

// 把原Map的每个CartItem转为JSON Map
var jsonCompatibleMap = _items.map((key, item) => MapEntry(key, item.toJson()));
// 转为标准JSON字符串
print(jsonEncode(jsonCompatibleMap));

这时的输出就是严格的JSON格式:

{"p1":{"id":"你的id值","title":"你的title值"},"p2":{"id":"另一个id","title":"另一个title"}}

两种方法各有适用场景:重写toString()适合快速调试,无需额外代码就能直接打印;转JSON的方式则适合需要标准格式输出的正式场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 11:34:07