为什么它返回的实例而不是值?

  • 本文关键字:实例 返回 dart
  • 更新时间 :
  • 英文 :


为什么getCurrencyFromAPI函数返回货币的实例而不是值本身。我的模型课有什么问题吗?

这是函数

import 'dart:convert';
import 'package:app_bloc/data/models/currency.dart';
import 'package:http/http.dart' as http;
import 'package:app_bloc/constants/api_urls.dart';
class Repository {
Future<dynamic> getCurrencyFromAPI() async {
final res = await http.get(Uri.parse(coinbaseURL));
if (res.statusCode == 200) {
final resData = jsonDecode(res.body);
final data = resData['data'] as List;
List<Currency> list = [];
for (var e in data) {
final a = Currency.fromJson(e);
list.add(a);
}
print(list);
} else {
throw Exception('Error fetching data from API');
}
}
}
void main(List<String> args) {
Repository repo = Repository();
repo.getCurrencyFromAPI();
}

这是模型类

class Currency {
String id;
String name;
String minSize;
Currency({required this.id, required this.name, required this.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);
}
}

您的Currency类没有toString方法。这意味着它继承了Object的默认值,它返回Instance of 'Currency'

当你打印List<Currency>时,它会在每个元素上调用toString来获得字符串表示。这就是你看到的。一个Currency对象。

尝试添加:

String toString() => "Currency(id: $id, name: $name, minSize: $minSize)";

给你的Currency课,看看它是否有区别。

Currency currencyModelFromJson(String str) => Currency.fromJson(json.decode(str));
class Currency {
String id;
String name;
String minSize;
Currency({required this.id, required this.name, required this.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);
}
}

然后这样做:


class Repository {
Future<dynamic> getCurrencyFromAPI() async {
final res = await http.get(Uri.parse(coinbaseURL));
if (res.statusCode == 200) {
final resData = jsonDecode(res.body);
final data = resData['data'] as List;
List<Currency> list = [];
for (var e in data) {
final a = currencyModelFromJson(e); // change here 
list.add(a);
}
print(list);
} else {
throw Exception('Error fetching data from API');
}
}
}

最新更新