Json 颤振-省道变量丢失并不断重新初始化
我现在正和弗利特一起尝试。但当从另一个类访问时,我的变量会不断重新初始化 我正在使用json解析,我需要请求的两部分。“关系”部分和“策略”部分 要解析此json,我将执行以下操作:Json 颤振-省道变量丢失并不断重新初始化,json,variables,static,dart,flutter,Json,Variables,Static,Dart,Flutter,我现在正和弗利特一起尝试。但当从另一个类访问时,我的变量会不断重新初始化 我正在使用json解析,我需要请求的两部分。“关系”部分和“策略”部分 要解析此json,我将执行以下操作: List<RelatorioProdutos> parseRelatorioPorProduto(String responseBody) { final parsed = json.decode(responseBody); var relatorio = parsed['Relatorio'
List<RelatorioProdutos> parseRelatorioPorProduto(String responseBody) {
final parsed = json.decode(responseBody);
var relatorio = parsed['Relatorio'];
var mensagem = parsed['Mensagem'];
print (mensagem); // Here the variable returns well,
//but when i need it in other class i receive null.
return relatorio.map<RelatorioProdutos>((json) => new RelatorioProdutos.fromJson(json)).toList();
}
class RelatorioProdutos {
String CodigoProduto;
var QtdVendida;
var TotalVendas;
String Descricao;
RelatorioProdutos({this.CodigoProduto, this.QtdVendida, this.TotalVendas, this.Descricao,});
factory RelatorioProdutos.fromJson(Map json) {
//returns a List of Maps
return new RelatorioProdutos(
CodigoProduto: json['CodigoProduto'] as String,
QtdVendida: json['QtdVendida'],
TotalVendas: json['TotalVendas'],
Descricao: json['Descricao'] as String,
);
}
}
List parseRelatorioPorProduto(字符串响应库){
final parsed=json.decode(responseBody);
var relatorio=已解析['relatorio'];
var mensage=parsed['mensage'];
print(mensage);//这里变量返回良好,
//但当我在其他类中需要它时,我会收到null。
返回relatorio.map((json)=>newrelatorioprodutos.fromJson(json)).toList();
}
类关系程序{
字符串CodigoProduto;
QtdVendida变种;
var TotalVendas;
字符串描述符;
RelatorioProdutos({this.CodigoProduto,this.QtdVendida,this.TotalVendas,this.descripao,});
factory RelatorioProdutos.fromJson(映射json){
//返回地图列表
返回新的relatoroprodutos(
CodigoProduto:json['CodigoProduto']作为字符串,
QtdVendida:json['QtdVendida'],
TotalVendas:json['TotalVendas'],
descripcao:json['descripcao']作为字符串,
);
}
}
我想在另一个类中使用这个'mensagem'变量为用户显示错误,但我总是收到'null'
我已经尝试过setState,但它会重新加载我的json,我不想再次请求RestServer
从现在开始谢谢你 如果我理解正确,您希望从另一个类访问函数的局部变量。我认为这是不可能的 一种方法是将您的响应包装到另一个包含响应的对象中,并使用以下变量:
List<Response<RelatorioProdutos>> parseRelatorioPorProduto(
String responseBody) {
final parsed = json.decode(responseBody);
var relatorio = parsed['Relatorio'];
var mensagem = parsed['Mensagem'];
print(mensagem); // Here the variable returns well,
//but when i need it in other class i receive null.
return relatorio
.map((json) => new Response<RelatorioProdutos>(
new RelatorioProdutos.fromJson(json), mensagem))
.toList();
}
class RelatorioProdutos {
String CodigoProduto;
var QtdVendida;
var TotalVendas;
String Descricao;
RelatorioProdutos({
this.CodigoProduto,
this.QtdVendida,
this.TotalVendas,
this.Descricao,
});
factory RelatorioProdutos.fromJson(Map json) {
//returns a List of Maps
return new RelatorioProdutos(
CodigoProduto: json['CodigoProduto'] as String,
QtdVendida: json['QtdVendida'],
TotalVendas: json['TotalVendas'],
Descricao: json['Descricao'] as String,
);
}
}
class Response<T> {
const Response(
this.value,
this.errorMessage,
);
final T value;
final String errorMessage;
bool get hasError => errorMessage != null;
}
List parseRelatorioPorProduto(
字符串响应体){
final parsed=json.decode(responseBody);
var relatorio=已解析['relatorio'];
var mensage=parsed['mensage'];
print(mensage);//这里变量返回良好,
//但当我在其他类中需要它时,我会收到null。
回程关系
.map((json)=>新响应(
新的RelatorioProdutos.fromJson(json),mensage)
.toList();
}
类关系程序{
字符串CodigoProduto;
QtdVendida变种;
var TotalVendas;
字符串描述符;
关系调节器({
这是CodigoProduto,
这是QtdVendida,
这是TotalVendas,
这个,描述一下,
});
factory RelatorioProdutos.fromJson(映射json){
//返回地图列表
返回新的relatoroprodutos(
CodigoProduto:json['CodigoProduto']作为字符串,
QtdVendida:json['QtdVendida'],
TotalVendas:json['TotalVendas'],
descripcao:json['descripcao']作为字符串,
);
}
}
班级反应{
常数响应(
这个,这个价值,,
这是一条错误消息,
);
最终T值;
最终字符串错误消息;
bool get hasError=>errorMessage!=null;
}
在本例中,我创建了一个Response
对象,该对象可以包含响应值和错误消息
在
parseRelatorioPorProduto
中,我没有返回relatorio,而是将返回类型更改为Response
,以便能够访问调用此函数的任何类的值和错误消息。谢谢Letsar,我尝试了YoutIdeia,但我遇到了许多其他错误
为了解决这个问题,我使用了以下方法:
List<RelatorioProdutos> parseRelatorioPorProduto(String responseBody) {
final parsed = json.decode(responseBody);
var relatorio = parsed['Relatorio'];
var mensagem = parsed['Mensagem'];
if(mensagem[0].toString().substring(16,17) == "0"){
List<RelatorioProdutos> asd = new List();
RelatorioProdutos aimeudeus = new RelatorioProdutos(Descricao: mensagem[0].toString(), CodigoProduto: "a", TotalVendas: 0, QtdVendida: 0);
asd.add(aimeudeus);
return asd;
}else{
return relatorio.map<RelatorioProdutos>((json) => new RelatorioProdutos.fromJson(json)).toList();
}
}
List parseRelatorioPorProduto(字符串响应库){
final parsed=json.decode(responseBody);
var relatorio=已解析['relatorio'];
var mensage=parsed['mensage'];
if(mensage[0].toString().substring(16,17)=“0”){
List asd=新列表();
RelatorioProdutos aimeudeus=新的RelatorioProdutos(descripcao:mensage[0].toString(),CodigoProduto:“a”,TotalVendas:0,QtdVendida:0);
asd.add(aimeudeus);
返回asd;
}否则{
返回relatorio.map((json)=>newrelatorioprodutos.fromJson(json)).toList();
}
}
感谢Letsar提供的帮助,但如果我这样做,我会在List和List中遇到很多其他错误,我这样做是为了解决这个问题ParseRelationOporProduto(String responseBody){final parsed=json.decode(responseBody);var Relationrio=parsed['Relationio'];var mensagem=parsed['mensagem'];if(mensagem[0].toString().substring(16,17)=“0”){List asd=new List();RelatorioProdutos aimeudeus=new RelatorioProdutos(descripao:mensage[0].toString(),CodigoProduto:“a”,TotalVendas:0,QtdVendida:0);asd.add(aimeudeus);return asd;}else{return relatorio.map((json)=>new RelatorioProdutos.fromJson(json)).toList();}