I got the problem when I want to fetch Data from PONS API.
import 'package:eng_it_translator/model/model.dart';
import 'package:http/http.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
class Network {
Future<Vocabulary> fetchData({String keyword}) async {
var headers = {
'X-Secret':
'XXXXXXXXXXXXX',
};
var params = {
'q': 'house',
'l': 'deen',
};
var query = params.entries.map((p) => '${p.key}=${p.value}').join('&');
var url = Uri.parse("https://api.pons.com/v1/dictionary?$query");
var res = await http.get(url, headers: headers);
if (res.statusCode == 200) {
var data = json.decode(res.body);
var realdata =
List<Vocabulary>.from(data).map((x) => Vocabulary.fromJson(x));
print(realdata);
} else {
throw Exception('http.get error: statusCode= ${res.statusCode}');
}
}
}
The argument type 'Vocabulary' can't be assigned to the parameter type 'Map<String, dynamic>'.
Body of DATA is in Map structure, but I can't transform it to List.
class Vocabulary {
String lang;
List<Hits> hits;
Vocabulary({this.lang, this.hits});
Vocabulary.fromJson(Map<String, dynamic> json) {
lang = json['lang'];
if (json['hits'] != null) {
hits = new List<Hits>();
json['hits'].forEach((v) {
hits.add(new Hits.fromJson(v));
});
}
}