Flutter 如何修复类型';列表<;动态>';不是类型为';字符串';
目前,我从我的代码中得到了这种问题。我一直在努力解决这个问题。但无法为解决这一问题提供资金 Json代码Flutter 如何修复类型';列表<;动态>';不是类型为';字符串';,flutter,dart,flutter-layout,flutter-test,Flutter,Dart,Flutter Layout,Flutter Test,目前,我从我的代码中得到了这种问题。我一直在努力解决这个问题。但无法为解决这一问题提供资金 Json代码 { "id": 22, "client_need_id": 46, "clientNeed": { "id": 46, "client_id": 29, "perpose": "Pooja",
{
"id": 22,
"client_need_id": 46,
"clientNeed": {
"id": 46,
"client_id": 29,
"perpose": "Pooja",
"details": "Test",
"when": "2020-08-28 20:11",
"for": null,
"accepted_by": 10,
"name": "Sfgdsa",
"mobile": "567896789",
"email": "sdnsd@asd.com",
"org_name": "Buii",
"address": "Tata",
"city": "Kolkata",
"state": "West Bengal",
"pincode": "789009",
"country": "India",
"latitude": null,
"longitude": null,
"client_ip": null,
"device": null,
"created_at": "2020-08-23T14:40:06.000000Z",
"updated_at": "2020-09-02T18:07:40.000000Z"
},
"quote_details": null,
"quote_amount": null,
"isCalled": 0,
"isChecked": 0,
"isAccept": 1,
"isGoing": 0,
"checkIn": "2020-09-03 02:00:00",
"checkOut": "2020-09-03 02:00:15",
"pandit_id": 10,
"pandit": {
"id": 10,
"name": "Ajay Roy",
"mobile": "8013138886",
"sms_token": null,
"mobile_verified_at": null,
"email": "ajay@abc.com",
"email_token": null,
"email_verified_at": null,
"password": "5f4dcc3b5aa765d61d8327deb882cf99",
"remember_token": null,
"avatar": null,
"address": "dum dum cantonment",
"city": "Kolkata",
"state": "West Bengal",
"country": "India",
"pincode": 700028,
"location_id": null,
"travelled": null,
"adharcard": "34567890",
"pancard": "ATD8994568",
"specialisation": "Vastushastri",
"services": [
"Artrology",
"Numerology"
],
"min_charge": "500",
"max_charge": "1000",
"online_charge": "700",
"qualification": "Test1",
"experience": "12 Years",
"language": "Bengali",
"active": "0",
"varify": "1",
"payment_mode": "{\"bank_name\":\"HDFC Bank\",\"bank_address\":\"Dum Dum Cant\",\"ifsc_code\":\"HDFC098765\",\"account_no\":\"987654654678\",\"account_holder\":\"Abit Roy\"}",
"created_at": "2020-08-31T19:03:56.000000Z",
"updated_at": "2020-09-16T12:40:54.000000Z"
},
"visits": [
{
"id": 70,
"pandit_activity_id": 22,
"pandit_id": 10,
"checkIn": "2020-09-03 02:00:00",
"checkOut": null,
"created_at": "2020-09-02T20:30:00.000000Z",
"updated_at": "2020-09-02T20:30:00.000000Z"
},
{
"id": 71,
"pandit_activity_id": 22,
"pandit_id": 10,
"checkIn": null,
"checkOut": "2020-09-03 02:00:15",
"created_at": "2020-09-02T20:30:15.000000Z",
"updated_at": "2020-09-02T20:30:15.000000Z"
}
]
}
铅模型
import 'dart:convert';
import 'package:PandeetApp/models/client_need.dart';
import 'package:PandeetApp/models/pandit.dart';
import 'package:PandeetApp/models/visit.dart';
import 'package:PandeetApp/services/lead.dart';
class Lead extends LeadService {
int id;
int clientNeedId;
ClientNeed clientNeed;
String quoteDetails;
String quoteAmount;
int isCalled;
int isChecked;
int isAccept;
int isGoing;
String checkIn;
String checkOut;
int panditId;
Pandit pandit;
List<Visit> visits;
Lead({
this.id,
this.clientNeedId,
this.clientNeed,
this.quoteDetails,
this.quoteAmount,
this.isCalled,
this.isChecked,
this.isAccept,
this.isGoing,
this.checkIn,
this.checkOut,
this.panditId,
this.pandit,
this.visits,
});
Future<List<Lead>> fetchLeads() async {
var datas = await super.fetchDatas();
var dataList = json.decode(datas);
var leads = dataList.map((e) => Lead.fromJson(e)).toList();
return leads;
}
factory Lead.fromJson(Map<String, dynamic> json) {
List<Visit> visits = List<Visit>();
if (json['visits'] != null) {
json['visits'].forEach((v) {
visits.add(Visit.fromJson(v));
});
}
return Lead(
id: json['id'],
clientNeedId: json['client_need_id'],
clientNeed: json['clientNeed'] != null
? ClientNeed.fromJson(json['clientNeed'])
: ClientNeed(),
quoteDetails: json['quote_details'],
quoteAmount: json['quote_amount'],
isCalled: json['isCalled'],
isChecked: json['isChecked'],
isAccept: json['isAccept'],
isGoing: json['isGoing'],
checkIn: json['checkIn'],
checkOut: json['checkOut'],
panditId: json['pandit_id'],
pandit:
json['pandit'] != null ? Pandit.fromJson(json['pandit']) : Pandit(),
visits: visits,
);
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
if (this.clientNeed != null) {
data['clientNeed'] = this.clientNeed.toJson();
}
data['quote_details'] = this.quoteDetails;
data['quote_amount'] = this.quoteAmount;
data['isCalled'] = this.isCalled;
data['isChecked'] = this.isChecked;
data['isAccept'] = this.isAccept;
data['isGoing'] = this.isGoing;
data['checkIn'] = this.checkIn;
data['checkOut'] = this.checkOut;
if (this.pandit != null) {
data['pandit'] = this.pandit.toJson();
}
if (this.visits != null) {
data['visits'] = this.visits.map((v) => v.toJson()).toList();
}
return data;
}
}
导入'dart:convert';
导入“包:pandeetap/models/client_need.dart”;
导入“包:pandeetap/models/pandit.dart”;
导入“包:PandeetApp/models/visit.dart”;
导入“包:pandeetap/services/lead.dart”;
班长延伸班长服务{
int-id;
int clientNeedId;
客户需求客户需求;
字符串引用的详细信息;
字符串quoteAmount;
国际被称为;
检查int;
int被接受;
int正在运行;
字符串签入;
字符串校验;
内特潘迪蒂;
潘迪特潘迪特;
列出访问名单;
引导({
这个身份证,
这个,clientNeedId,
这个客户需要,
这是引用的详细信息,
这个.quoteAmount,
这个叫做,
这是我检查过的,
我接受这个,
我要走了,
这个,签入,
这是结帐,
这个,潘迪迪,
这个,潘伟迪,
这个,访问,,
});
Future fetchLeads()异步{
var datas=wait super.fetchDatas();
var dataList=json.decode(数据);
var leads=dataList.map((e)=>Lead.fromJson(e)).toList();
返回引线;
}
factory Lead.fromJson(映射json){
列表访问=列表();
if(json['visions']!=null){
json['visions'].forEach((v){
add(Visit.fromJson(v));
});
}
回程导线(
id:json['id'],
clientNeedId:json['client\u need\u id'],
clientNeed:json['clientNeed']!=null
?ClientNeed.fromJson(json['ClientNeed'])
:ClientNeed(),
quoteDetails:json['quote_details'],
quoteAmount:json['quote_amount'],
isCalled:json['isCalled'],
isChecked:json['isChecked'],
isAccept:json['isAccept'],
isgo:json['isgo'],
签入:json['checkIn'],
签出:json['checkOut'],
panditId:json['pandit_id'],
潘伟迪:
json['pandit']!=null?pandit.fromJson(json['pandit']):pandit(),
访问:访问,
);
}
映射到JSON(){
最终地图数据=新地图();
数据['id']=this.id;
if(this.clientNeed!=null){
data['clientNeed']=this.clientNeed.toJson();
}
数据['quote_details']=this.quoteDetails;
数据['quote'u amount']=此.quoteAmount;
数据['isCalled']=this.isCalled;
数据['isChecked']=this.isChecked;
数据['isAccept']=this.isAccept;
数据['isGong']=this.isGong;
数据['checkIn']=this.checkIn;
数据['checkOut']=this.checkOut;
如果(this.pandit!=null){
data['pandit']=this.pandit.toJson();
}
if(this.visions!=null){
data['vists']=this.visions.map((v)=>v.toJson()).toList();
}
返回数据;
}
}
屏幕部分
FutureBuilder<List<Lead>>(
future: lead.fetchLeads(),
builder: (context, snapshot) {
if (snapshot.hasData) {
List leads = snapshot.data;
// print(leads.length); // Data Not Getting Here
if (leads.length > 0) {
return dataList(leads);
} else {
return Container(
padding: EdgeInsets.only(top: 200),
child: Text("You have no clients"),
);
}
} else if (snapshot.hasError) {
print(snapshot.error);
return Text("Server is Down now. Try again later");
}
return Container(
padding: EdgeInsets.only(top: 200),
child: CircularProgressIndicator(
backgroundColor: Colors.redAccent,
),
);
},
);
FutureBuilder(
future:lead.fetchLeads(),
生成器:(上下文,快照){
if(snapshot.hasData){
列表线索=snapshot.data;
//打印(leads.length);//此处未获取数据
如果(引线长度>0){
返回数据列表(leads);
}否则{
返回容器(
填充:仅限边缘设置(顶部:200),
child:Text(“您没有客户”),
);
}
}else if(snapshot.hasrerror){
打印(快照错误);
返回文本(“服务器已关闭,请稍后再试”);
}
返回容器(
填充:仅限边缘设置(顶部:200),
子对象:循环压缩机指示器(
背景颜色:Colors.redAccent,
),
);
},
);
我想这里有问题。我已经完成了我的项目,但这种问题毁了我的项目。我不明白在这个问题上我错在哪里。找不到确切的行号。给出提示,但问题的具体位置不可理解。请尽快帮助我。不要将快照数据强制转换为列表,而是使用var。请在出现错误之前尝试打印结果,然后继续
FutureBuilder<List<Lead>>(
future: lead.fetchLeads(),
builder: (context, snapshot) {
if (snapshot.hasData) {
var leads = snapshot.data; // use var instead of List
// try this in your case it is received as String
print(leads.runtimeType.toString())
// if it is string convert to List.
var leadsJson = jsonDecode(leads)
FutureBuilder(
future:lead.fetchLeads(),
生成器:(上下文,快照){
if(snapshot.hasData){
var leads=snapshot.data;//使用var而不是List
//在您的情况下尝试此操作,它将作为字符串接收
打印(leads.runtimeType.toString())
//如果是字符串,则转换为列表。
var leadsJson=jsonDecode(导线)
感谢您的支持。