Why is my class.fromJson method not working?

552 views Asked by At

I have an issue which I can't resolve, I am reading from a sqflite data base and a get method I have uses the class.fromJson method but it never returns anything, not even an error.

Future<int> deleteAllDetalleActividadCalificacion() async {
    final db = await database;
    final res = await db.rawDelete('''DELETE FROM DetallesActividadCalificacion ''');
    return res;
  }
  Future<List<DetalleActividadCalificacion>> getDetalleActividadCalificacion(int proyectoId) async {
    final db = await database;
    final res = await db.rawQuery('''SELECT * FROM DetallesActividadCalificacion WHERE proyectoId = $proyectoId ''');
    print('this is  $res');

    List<DetalleActividadCalificacion> list =
    res.isNotEmpty ? res.map((e) => DetalleActividadCalificacion.fromJson(e)).toList() : [];
    print('this is $list');
    return list;

  }

In the first print (res) I get the following:

[{id: 50, proyectoId: 384, asignaturaId: 1, asignaturaColorPrimario: #018FB1, asignaturaNombre: EspaƱol, proyectoTitulo: null, secuenciaActividadId: 403, secuenciaActividadTitulo: w, secuenciaActividadDescripcion: w, fechaRegistro: 2020-08-26, rubricaId: null, instrucciones: null, descripcion: null, calificacionId: 4, calificacionNombre: 8}]

Then the second print returns nothing. This means that something might be wrong with my class but I have checked it over and over and even rewrote the class but nothing.

Here is my class model.

import 'dart:convert';


List<DetalleActividadCalificacion> DetalleActividadCalificacionModelFromJson(String str) =>
    List<DetalleActividadCalificacion>.from(jsonDecode(str).map((x)=> DetalleActividadCalificacion.fromJson(x)));

String DetalleActividadCalificacionModelToJson(List<DetalleActividadCalificacion> data) =>
    json.encode(List<dynamic>.from(data.map((e) => e.toJson())));

class DetalleActividadCalificacion {
  int id;
  int proyectoId;
  int asignaturaId;
  String asignaturaColorPrimario;
  String asignaturaNombre;
  String proyectoTitulo;
  int secuenciaActividadId;
  String secuenciaActividadTitulo;
  String secuenciaActividadDescripcion;
  String fechaRegistro;
  int rubricaId;
  String instrucciones;
  String descripcion;
  int calificacionId;
  int calificacionNombre;
  DetalleActividadCalificacion({
    this.id,
    this.proyectoId,
    this.asignaturaId,
    this.asignaturaColorPrimario,
    this.asignaturaNombre,
    this.proyectoTitulo,
    this.secuenciaActividadId,
    this.secuenciaActividadTitulo,
    this.secuenciaActividadDescripcion,
    this.fechaRegistro,
    this.rubricaId,
    this.instrucciones,
    this.descripcion,
    this.calificacionId,
    this.calificacionNombre,
  });

  

  factory DetalleActividadCalificacion.fromJson(Map<String, dynamic> json) => DetalleActividadCalificacion(
    id: json["id"],
    proyectoId: json["proyectoId"],
    asignaturaId: json["asignaturaId"],
    asignaturaColorPrimario: json["asignaturaColorPrimario"],
    asignaturaNombre: json["asignaturaNombre"],
    proyectoTitulo: json["proyectoTitulo"],
    secuenciaActividadId: json["secuenciaActividadId"],
    secuenciaActividadTitulo: json["secuenciaActividadTitulo"],
    secuenciaActividadDescripcion: json["secuenciaActividadDescripcion"],
    fechaRegistro: json["fechaRegistro"],
    rubricaId: json["rubricaId"],
    instrucciones: json["instrucciones"],
    descripcion: json["descripcion"],
    calificacionId: json["calificacionId"],
    calificacionNombre: json["calificacionNombre"],
  );

  Map<String, dynamic> toJson() => {
    "id": id,
    "proyectoId": proyectoId,
    "asignaturaId": asignaturaId,
    "asignaturaColorPrimario": asignaturaColorPrimario,
    "asignaturaNombre": asignaturaNombre,
    "proyectoTitulo": proyectoTitulo,
    "secuenciaActividadId": secuenciaActividadId,
    "secuenciaActividadTitulo": secuenciaActividadTitulo,
    "secuenciaActividadDescripcion": secuenciaActividadDescripcion,
    "fechaRegistro": fechaRegistro,
    "rubricaId": rubricaId,
    "instrucciones": instrucciones,
    "descripcion": descripcion,
    "calificacionId": calificacionId,
    "calificacionNombre": calificacionNombre,
  };
}

On a side note, I have plenty of these around my app and none of them have given me this issue.

1

There are 1 answers

1
Darsh Shah On

I think this is the correct way to declare the Model.

class DetalleActividadCalificacion {
  int id;
  int proyectoId;
  int asignaturaId;
  String asignaturaColorPrimario;
  String asignaturaNombre;
  Null proyectoTitulo;
  int secuenciaActividadId;
  String secuenciaActividadTitulo;
  String secuenciaActividadDescripcion;
  String fechaRegistro;
  Null rubricaId;
  Null instrucciones;
  Null descripcion;
  int calificacionId;
  int calificacionNombre;

  DetalleActividadCalificacion(
      {this.id,
      this.proyectoId,
      this.asignaturaId,
      this.asignaturaColorPrimario,
      this.asignaturaNombre,
      this.proyectoTitulo,
      this.secuenciaActividadId,
      this.secuenciaActividadTitulo,
      this.secuenciaActividadDescripcion,
      this.fechaRegistro,
      this.rubricaId,
      this.instrucciones,
      this.descripcion,
      this.calificacionId,
      this.calificacionNombre});

  DetalleActividadCalificacion.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    proyectoId = json['proyectoId'];
    asignaturaId = json['asignaturaId'];
    asignaturaColorPrimario = json['asignaturaColorPrimario'];
    asignaturaNombre = json['asignaturaNombre'];
    proyectoTitulo = json['proyectoTitulo'];
    secuenciaActividadId = json['secuenciaActividadId'];
    secuenciaActividadTitulo = json['secuenciaActividadTitulo'];
    secuenciaActividadDescripcion = json['secuenciaActividadDescripcion'];
    fechaRegistro = json['fechaRegistro'];
    rubricaId = json['rubricaId'];
    instrucciones = json['instrucciones'];
    descripcion = json['descripcion'];
    calificacionId = json['calificacionId'];
    calificacionNombre = json['calificacionNombre'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['proyectoId'] = this.proyectoId;
    data['asignaturaId'] = this.asignaturaId;
    data['asignaturaColorPrimario'] = this.asignaturaColorPrimario;
    data['asignaturaNombre'] = this.asignaturaNombre;
    data['proyectoTitulo'] = this.proyectoTitulo;
    data['secuenciaActividadId'] = this.secuenciaActividadId;
    data['secuenciaActividadTitulo'] = this.secuenciaActividadTitulo;
    data['secuenciaActividadDescripcion'] = this.secuenciaActividadDescripcion;
    data['fechaRegistro'] = this.fechaRegistro;
    data['rubricaId'] = this.rubricaId;
    data['instrucciones'] = this.instrucciones;
    data['descripcion'] = this.descripcion;
    data['calificacionId'] = this.calificacionId;
    data['calificacionNombre'] = this.calificacionNombre;
    return data;
  }
}