I have problem with send request in Flutter ,I have this model :
import 'dart:convert';
List<Teams> teamsFromJson(String str) =>
List<Teams>.from(json.decode(str).map((x) => Teams.fromJson(x)));
String teamsToJson(List<Teams> data) =>
json.encode(List<dynamic>.from(data.map((x) => x.toJson())));
class Teams {
Teams({
this.club,
this.price,
this.surename,
this.id,
this.league,
});
final club;
final price;
final surename;
final id;
final league;
factory Teams.fromJson(Map<String, dynamic> json) => Teams(
club: json["club"],
price: json["price"],
surename: json["surename"],
id: json["id"],
league: json["league"],
);
Map<String, dynamic> toJson() => {
"club": club,
"price": price,
"surename": surename,
"id": id,
"league": league,
};
}
I add initial values and update them in provider :
List<Teams> get teams => _teams;
List<Teams> _teams = [
Teams(club: "", price: 0, surename: "", id: "", league: ""),
Teams(club: "", price: 0, surename: "", id: "", league: ""),]
addToTeam(data, index) {
teams[index]=Team(club: data.club,
price: data.price,
surename: data.surname,
id: data.id,
league: data.leagueName);
}
and it works fine ,now I want to send the list teams as a request ,I add button and create method like this :
onPressed: () {
ApiService().saveTeam(teamsProvider.teams);
}
on ApiService I have this request :
class ApiService {
var url = 'http://10.0.2.2:8000/api/v1';
Future saveTeam(data) async {
var newurl = Uri.parse(url + '/send_test');
try {
var response = await http.post(newurl, body: data);
var result = jsonDecode(response.body);
print(result);
} catch (e) {
print('error : $e');
}
}
}
the api request is just return the request in laravel :
public function send_test(Request $request)
{
return $request;
}
as a result I get this error mesage : type 'Teams' is not a subtype of type 'int' in type cast
How can I solve this?
I solved it by myself ,I converted the Team list to Sting and decoded it with json:
class ApiService {
var url = 'http://10.0.2.2:8000/api/v1';
Future saveTeam(List<Teams> data) async {
var list = [];
data.map((e) {
list.add({
"club": e.club,
"price": e.price,
"surename": e.surename,
"id": e.id,
"league": e.league
});
}).toList();
try {
var newurl = Uri.parse(url + '/send_test');
var response = await http.post(newurl, body: jsonEncode(list));
var result = jsonDecode(response.body);
print(result);
} catch (e) {
print('error : $e');
}
}
}
then in api in laaravel/lumen received the json and decoded it again :
public function send_test(Request $request)
{
$result = json_decode($request->getContent(), true);
return $result;
}