(Решено) (тип 'String' не является подтипом типа 'int') - Flutter - PullRequest
0 голосов
/ 17 февраля 2020

На этот вопрос уже был дан ответ, продолжайте чтение, если вы считаете, что у вас возникла та же ошибка, ответ был дан пользователем: Tariqul Islam

, так как несколько дней go произошло обновление флаттера, мой код показывает следующую ошибку:

_TypeError (тип 'String' не является подтипом типа 'int')

Очевидно, приложение прекрасно работало до этого обновления, даже после перехода от «int» к «String» та же ошибка, что и я, но наоборот:

_TypeError (тип 'int' не является подтипом типа ' String ')

Сколько бы я ни менял значения, мне все равно кажется, что эта ошибка по-прежнему очевидна, но и у RestApi, который я использую, не было никаких изменений.

Я получаю ошибку, когда я получаю «Чип», после того, как я изменяю его на «Строка», я получаю ту же ошибку в «Числе», и после того, как я изменяю, появляется та же самая ошибка, но наоборот, как я указал выше

Здесь модель файла Json:

          class EventoModel {
        String id;
        String nombreEvento;
        List<Participantes> participantes;

        EventoModel({
          this.id,
          this.nombreEvento,
          this.participantes
        });

        factory EventoModel.fromJson(Map<String, dynamic> parsedJson){
          var list = parsedJson['participantes'] as List;
          //print(list.runtimeType);
          List<Participantes> participantesList = list.map((i) => Participantes.fromJson(i)).toList();
          return EventoModel(
            id            : parsedJson ['id'],
            nombreEvento  : parsedJson ['nombreEvento'],
            participantes : participantesList
          );
        }
      }

      class Participantes {
      String uniqueId;
      String apellido;
      int chip;
      String nombre;
      int numero;
      String place;
      String tiempo;

      Participantes({
        this.apellido,
        this.chip,
        this.nombre,
        this.numero,
        this.place,
        this.tiempo,
      });

      factory Participantes.fromJson(Map<String, dynamic> parsedJson) {
        //print(list.runtimeType);
        return Participantes(
          apellido  : parsedJson['Apellido'],
          chip      : parsedJson['Chip'],
          nombre    : parsedJson['Nombre'],
          numero    : parsedJson['Numero'],
          place     : parsedJson['Place'],
          tiempo    : parsedJson['Tiempo'],
        );
      }

      Map<String, dynamic> toJson() {
        return {
          'Apellido'  : apellido,
          'Chip'      : chip,
          'Nombre'    : nombre,
          'Numero'    : numero,
          'Place'     : place,
          'Tiempo'    : tiempo,
        };
      }
    }

Это файл Json Пример:

              {
              "nombreEvento" : "Clasico El Colombiano 2020",
              "participantes" : [ {
                "Apellido" : "MARTINEZ GUTIERREZ",
                "Chip" : "739",
                "Nombre" : "JOSE",
                "Numero" : "139",
                "Place" : "1.",
                "Tiempo" : "00:30:12,91"
                }, {
                "Apellido" : "SUAREZ MORERA",
                "Chip" : "707",
                "Nombre" : "DANIEL",
                "Numero" : "107",
                "Place" : "2.",
                "Tiempo" : "02:00:17,54"
                }, {
                "Apellido" : "RODRIGUEZ VARGAS",
                "Chip" : "1686",
                "Nombre" : "JOSE LUIS",
                "Numero" : "274",
                "Place" : "3.",
                "Tiempo" : "02:01:09,09"
                }
              ]
            }

Может кто-нибудь помочь мне? : c

Ответы [ 3 ]

0 голосов
/ 17 февраля 2020

В Json вы получаете Chip и Numero как String, но в файле модели вы объявляете их как целое число. измените тип данных на String в файле модели.

String numero;
String chip;
0 голосов
/ 17 февраля 2020

Из предоставленного вами JSON я сделал класс модели ниже: проверьте и дайте мне знать:

// To parse this JSON data, do
//
//     final eventoModel = eventoModelFromJson(jsonString);

import 'dart:convert';

EventoModel eventoModelFromJson(String str) => EventoModel.fromJson(json.decode(str));

String eventoModelToJson(EventoModel data) => json.encode(data.toJson());

class EventoModel {
    String nombreEvento;
    List<Participante> participantes;

    EventoModel({
        this.nombreEvento,
        this.participantes,
    });

    factory EventoModel.fromJson(Map<String, dynamic> json) => EventoModel(
        nombreEvento: json["nombreEvento"],
        participantes: List<Participante>.from(json["participantes"].map((x) => Participante.fromJson(x))),
    );

    Map<String, dynamic> toJson() => {
        "nombreEvento": nombreEvento,
        "participantes": List<dynamic>.from(participantes.map((x) => x.toJson())),
    };
}

class Participante {
    String apellido;
    String chip;
    String nombre;
    String numero;
    String place;
    String tiempo;

    Participante({
        this.apellido,
        this.chip,
        this.nombre,
        this.numero,
        this.place,
        this.tiempo,
    });

    factory Participante.fromJson(Map<String, dynamic> json) => Participante(
        apellido: json["Apellido"],
        chip: json["Chip"],
        nombre: json["Nombre"],
        numero: json["Numero"],
        place: json["Place"],
        tiempo: json["Tiempo"],
    );

    Map<String, dynamic> toJson() => {
        "Apellido": apellido,
        "Chip": chip,
        "Nombre": nombre,
        "Numero": numero,
        "Place": place,
        "Tiempo": tiempo,
    };
}

0 голосов
/ 17 февраля 2020

Просто введите int chip до String chip и int numero до String numero, потому что в ваших JSON данные поступают в String

 class Participantes {
      String uniqueId;
      String apellido;
      String chip;
      String nombre;
      String numero;
      String place;
      String tiempo;

      Participantes({
        this.apellido,
        this.chip,
        this.nombre,
        this.numero,
        this.place,
        this.tiempo,
      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...