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

Dart中getCurrencyFromAPI为何返回Currency实例而非具体值

问题根因

你的Currency模型类编写没有错误,打印时只显示实例对象、不展示内部字段值是Dart的默认行为:所有自定义类如果没有重写toString()方法,打印对象时默认输出格式为Instance of '类名',不会自动展开内部存储的属性值。

修复方案
  • 方案一:重写Currency类的toString()方法
    在类中新增toString的重写逻辑,自定义打印时的输出格式:

class Currency {
String id;
String name;
String minSize;

Currency({required this.id, required this.name, required this.minSize});

// 重写对象转字符串的默认逻辑
@override
String toString() {
return 'Currency(id: $id, name: $name, minSize: $minSize)';
}

factory Currency.fromJson(Map<String, dynamic> data) {
final id = data['id'] as String;
final name = data['name'] as String;
final minSize = data['min_size'] as String;
return Currency(id: id, name: name, minSize: minSize);
}
}

重写完成后再执行`print(list)`,就会按你定义的格式输出每个币种实例的具体字段值。

- 方案二:打印时手动访问对象属性
如果不想修改模型类,直接替换原有打印逻辑,遍历列表逐个输出属性即可:
```dart
// 注释掉原有print(list),替换为以下代码
list.forEach((currency) {
  print('id: ${currency.id}, name: ${currency.name}, minSize: ${currency.minSize}');
});
额外优化提示

你当前实现的getCurrencyFromAPI方法声明了Future<dynamic>返回值,但请求成功分支组装完list后没有写返回语句,后续如果需要在方法外部拿到接口返回的币种列表,要在print逻辑后补充return list;,否则方法实际返回值为null。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 09:36:24