如何解决Flutter:“类型'Teams' 不是类型转换中'int' 类型的子类型”错误来自请求
我在 Flutter 中发送请求有问题,我有这个模型:
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,};
}
我添加初始值并在提供程序中更新它们:
List<Teams> get teams => _teams;
List<Teams> _teams = [
Teams(club: "",price: 0,surename: "",id: "",league: ""),Teams(club: "",]
addToTeam(data,index) {
teams[index]=Team(club: data.club,price: data.price,surename: data.surname,id: data.id,league: data.leagueName);
}
它工作正常,现在我想将列表团队作为请求发送,我添加按钮并创建如下方法:
onPressed: () {
ApiService().saveTeam(teamsProvider.teams);
}
在 ApiService 上我有这个请求:
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');
}
}
}
api 请求只是在 laravel 中返回请求:
public function send_test(Request $request)
{
return $request;
}
因此我收到此错误消息:type 'Teams' is not a subtype of type 'int' in type cast
我该如何解决这个问题?
解决方法
我自己解决了,我把Team list转成Sting,用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');
}
}
}
然后在 laaravel/lumen 中的 api 接收到 json 并再次解码:
public function send_test(Request $request)
{
$result = json_decode($request->getContent(),true);
return $result;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。