Search code examples
flutterrequestprovider

Flutter : " type 'Teams' is not a subtype of type 'int' in type cast " error comes from request


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?


Solution

  • 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;
        }