Home > database >  How to fix type 'int' is not a subtype of type 'String'
How to fix type 'int' is not a subtype of type 'String'

Time:12-13

In my flutter project I am trying to get the following json API:

[
    {
        "id": 12,
        "active": false,
        "name": "Flat",
        "user": 10,
        "workout": 4
    },
    {
        "id": 15,
        "active": false,
        "name": "Inclined",
        "user": 10,
        "workout": 4
    }
]

I have created the following exercises_model.dart:

// To parse required this JSON data, do
//
//     final exercisesModel = exercisesModelFromJson(jsonString);
 
import 'dart:convert';
 
List<Exercises_Model> ExercisesModelFromJson(dynamic decodedResponse) =>
    List<Exercises_Model>.from(
        decodedResponse.map((x) => Exercises_Model.fromJson(x)));
 
String exercisesModelToJson(List<Exercises_Model> data) =>
    json.encode(List<dynamic>.from(data.map((x) => x.toJson())));
 
class Exercises_Model {
  Exercises_Model({
    required this.id,
    required this.active,
    required this.name,
    required this.user,
    required this.workout,
  });
 
  int id;
  bool active;
  String name;
  int user;
  int workout;
 
  factory Exercises_Model.fromJson(Map<String, dynamic> json) =>
      Exercises_Model(
        // id: json["id"],
        // active: json["active"],
        // name: json["name"],
        // user: json["user"],
        // workout: json["workout"],
        id: int.parse(json["id"]),
        active: json["active"],
        name: json["name"],
        user: int.parse(json["user"]),
        workout: int.parse(json["workout"]),
      );
 
  Map<String, dynamic> toJson() => {
        "id": id,
        "active": active,
        "name": name,
        "user": user,
        "workout": workout,
      };
}

Whenever I try to get the API I run into this error:

type 'int' is not a subtype of type 'String'

I am note sure how to fix it I have tried following this answer type 'String' is not a subtype of type 'int' but it did not work. My question why I am getting this error although I have set the int

CodePudding user response:

The problem is here:

int.parse(json["id"])

int.parse takes a string but what you are giving it is type int.

Replace that with:

int.parse(json["id"].toString())

You will also need to change user and workout.

  • Related