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

