-1
I’m trying to make an Infinit scroll, I have a consumption of an api where I take the data and convert with my model to json, I want to insert this data in variable, where when arriving at the end of the scroll always add 10 more items, my problem is to insert the data in this variable, I have tried several ways but without success, follow the error print and the code, if anyone can help me thank you.
My Main Class
var oficiosEnviadosData = new List<OficioEnviado>();
var oficiosEnviados = new List<OficioEnviado>();
onLoad() async {
oficiosEnviados = this.listPaginate(_currentPage, _limit);
oficiosEnviadosData.addAll(oficiosEnviados);
_currentPage++;
print(oficiosEnviadosData);
}
listPaginate(int page, int perPage) async {
var token = await LocalShared().getValueShared('token');
var url =
'http://10.0.2.2:3333/api/v1/oficio/lista?page=$page&perPage=$perPage';
var header = {
"Content-Type": "application/json",
"Authorization": "Bearer $token"
};
var response = await http.get(url, headers: header);
if (response.statusCode == 200) {
Iterable decoded = jsonDecode(response.body)["data"];
List<OficioEnviado> result =
decoded.map((data) => OficioEnviado.fromJson(data)).toList();
return result;
}
return response;
}
My Model
class OficioEnviado {
int idOfEnvio;
int idDestinatario;
String lido;
String pendente;
int idOficio;
Oficio oficio;
OficioEnviado(
{this.idOfEnvio,
this.idDestinatario,
this.lido,
this.pendente,
this.idOficio,
this.oficio});
OficioEnviado.fromJson(Map<String, dynamic> json) {
idOfEnvio = json['idOfEnvio'];
idDestinatario = json['idDestinatario'];
lido = json['lido'];
pendente = json['pendente'];
idOficio = json['idOficio'];
oficio =
json['oficio'] != null ? new Oficio.fromJson(json['oficio']) : null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['idOfEnvio'] = this.idOfEnvio;
data['idDestinatario'] = this.idDestinatario;
data['lido'] = this.lido;
data['pendente'] = this.pendente;
data['idOficio'] = this.idOficio;
if (this.oficio != null) {
data['oficio'] = this.oficio.toJson();
}
return data;
}
}
class Oficio {
int idRemetente;
int idOficio;
int idLocalRemetente;
String numOficio;
String ano;
String dataEnvio;
String horaEnvio;
String descricao;
String assunto;
String texto;
Remetente remetente;
Oficio(
{this.idRemetente,
this.idOficio,
this.idLocalRemetente,
this.numOficio,
this.ano,
this.dataEnvio,
this.horaEnvio,
this.descricao,
this.assunto,
this.texto,
this.remetente});
Oficio.fromJson(Map<String, dynamic> json) {
idRemetente = json['idRemetente'];
idOficio = json['idOficio'];
idLocalRemetente = json['idLocalRemetente'];
numOficio = json['numOficio'];
ano = json['ano'];
dataEnvio = json['dataEnvio'];
horaEnvio = json['horaEnvio'];
descricao = json['descricao'];
assunto = json['assunto'];
texto = json['texto'];
remetente = json['remetente'] != null
? new Remetente.fromJson(json['remetente'])
: null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['idRemetente'] = this.idRemetente;
data['idOficio'] = this.idOficio;
data['idLocalRemetente'] = this.idLocalRemetente;
data['numOficio'] = this.numOficio;
data['ano'] = this.ano;
data['dataEnvio'] = this.dataEnvio;
data['horaEnvio'] = this.horaEnvio;
data['descricao'] = this.descricao;
data['assunto'] = this.assunto;
data['texto'] = this.texto;
if (this.remetente != null) {
data['remetente'] = this.remetente.toJson();
}
return data;
}
}
class Remetente {
int idUsuario;
String cpf;
String senha;
String email;
String nome;
Remetente({this.idUsuario, this.cpf, this.senha, this.email, this.nome});
Remetente.fromJson(Map<String, dynamic> json) {
idUsuario = json['id_usuario'];
cpf = json['cpf'];
senha = json['senha'];
email = json['email'];
nome = json['nome'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id_usuario'] = this.idUsuario;
data['cpf'] = this.cpf;
data['senha'] = this.senha;
data['email'] = this.email;
data['nome'] = this.nome;
return data;
}
}
The problem is that you are inserting data of one type into a variable of another type.
List<OficioEnviado> result =
 decoded.map((data) => OficioEnviado.fromJson(data)).toList();
I believe the problem may be in this line here. Tried to debug and check what is receiving return methoddecoded.map
? Try to change theList<OficioEnviado>
forvar
and see the result.– Leonardo Paim