Json 未处理的异常:类型';int';不是类型为';字符串';在颤振应用程序中
我正在尝试做一个包含API的示例 下面是我想要返回的示例API:Json 未处理的异常:类型';int';不是类型为';字符串';在颤振应用程序中,json,api,flutter,flutter-listview,flutter-futurebuilder,Json,Api,Flutter,Flutter Listview,Flutter Futurebuilder,我正在尝试做一个包含API的示例 下面是我想要返回的示例API: [ { "ID": 47, "DerslikAd": "a", "SinifID": 1, "SinifAd": "1. Sınıf" }, { "ID": 77, &quo
[
{
"ID": 47,
"DerslikAd": "a",
"SinifID": 1,
"SinifAd": "1. Sınıf"
},
{
"ID": 77,
"DerslikAd": "4A",
"SinifID": 4,
"SinifAd": "4. Sınıf"
},
{
"ID": 76,
"DerslikAd": "5A",
"SinifID": 5,
"SinifAd": "5. Sınıf"
},
{
"ID": 1,
"DerslikAd": "8-A",
"SinifID": 8,
"SinifAd": "8. Sınıf"
}
]
这是我的模型:
class DerslikListesiModel {
int id;
String derslikAd;
String sinifID;
String sinifAd;
DerslikListesiModel({
this.id,
this.derslikAd,
this.sinifID,
this.sinifAd,
});
factory DerslikListesiModel.fromJson(Map<String, dynamic> json) {
return DerslikListesiModel(
id: json['ID'] != null ? json["ID"] : 0,
derslikAd: json['DerslikAd'] != null ? json["DerslikAd"] : '',
sinifID: json['SinifID'] != null ? json["SinifID"] : 0,
sinifAd: json['SinifAd'] != null ? json["SinifAd"] : '',
);
}
}
下面是我想用数据准备的示例屏幕:
class DerslikListesiGosterScreen extends StatefulWidget {
static final String id = "derslik_listesli_goster_screen";
final int sonAktifSezonId;
final int sonAktifOkulId;
final String strTarih;
final String nTarih;
DerslikListesiGosterScreen({
this.sonAktifSezonId,
this.sonAktifOkulId,
this.strTarih,
this.nTarih,
});
@override
_DerslikListesiGosterScreenState createState() =>
_DerslikListesiGosterScreenState();
}
class _DerslikListesiGosterScreenState
extends State<DerslikListesiGosterScreen> {
DerslikList list;
var id, sinifID, derslikAd, sinifAd;
@override
void initState() {
if (widget.sonAktifSezonId != null &&
widget.sonAktifOkulId != null &&
widget.strTarih != null &&
widget.nTarih != null) {
// send token server
ApiService()
.getDerslikListesi(
widget.sonAktifSezonId,
widget.sonAktifOkulId,
widget.strTarih,
widget.nTarih,
)
.then(
(value) {
loadingHide(context);
if (value == null) {
showCustomDialog(context,
title: "Giriş Hatası", subTitle: value.toString());
} else {
list = value;
print(list);
id = list.derslerinListesi[0].id;
sinifID = list.derslerinListesi[0].sinifID;
derslikAd = list.derslerinListesi[0].derslikAd;
sinifAd = list.derslerinListesi[0].sinifAd;
}
},
);
} else {
showCustomDialog(context,
title: "Giriş Hatası",
subTitle: "Lütfen kullanıcı adı ve şifre giriniz");
}
super.initState();
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Derslik Listesi'),
),
body: Column(
children: [
Text('${derslikAd}'),
Text('${sinifAd}'),
],
));
}
}
class-DerslikListesiGosterScreen扩展StatefulWidget{
静态最终字符串id=“derslik\u listsli\u goster\u screen”;
最终国际奏鸣曲;
最终国际奏鸣曲;
最终字符串strTarih;
最终字符串nTarih;
Dersliklistigosterscreen({
这是sonAktifSezonId,
这是sonAktifOkulId,
这是斯特塔里,
这是恩塔里,
});
@凌驾
_DerslikListesiGosterScreenState createState()=>
_Dersliklistigosterscreenstate();
}
类_DerslikListesiGosterScreenState
扩展状态{
井架清单;
变量id、sinifID、derslikAd、sinifAd;
@凌驾
void initState(){
如果(widget.sonAktifSezonId!=null&&
widget.sonAktifOkulId!=null&&
widget.strTarih!=null&&
widget.nTarih!=null){
//发送令牌服务器
ApiService()
.getDerslikListesi(
widget.sonAktifSezonId,
widget.sonAktifOkulId,
widget.strTarih,
widget.nTarih,
)
.那么(
(价值){
加载端(上下文);
如果(值==null){
showCustomDialog(上下文,
标题:“GirişHatası”,副标题:value.toString();
}否则{
列表=值;
打印(列表);
id=list.derslerinListesi[0].id;
sinifID=list.derslerinListesi[0].sinifID;
derslikAd=list.derslerinlistsi[0].derslikAd;
sinifAd=list.derslerinListesi[0].sinifAd;
}
},
);
}否则{
showCustomDialog(上下文,
标题:“GirişHatası”,
副标题:“吕特芬·库兰(Lütfen kullanıcıadıveşifre girizing”);
}
super.initState();
}
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“Derslik Listsi”),
),
正文:专栏(
儿童:[
文本(“${derslikAd}”),
文本(“${sinifAd}”),
],
));
}
}
如何修复此问题?尝试在DersliklistesModel类中将类型sinifID从String更改为int
int sinifID;
错误可能在这里:
class DerslikListesiModel {
int id;
String derslikAd;
String sinifID; <-- this should be an int
String sinifAd;
}
class-DerslikListesiModel{
int-id;
细绳吊;
字符串sinifID;是的,我没有收到任何错误,但我在屏幕上看到2个空值,这意味着我仍然无法获得我认为的数据:\flatter:我的终端上的'DerslikList'实例?我应该怎么做?如果你知道答案,请与我分享你的意见是的,我没有收到任何错误,但我在屏幕上看到2个空值,这意味着我将我想我无法获得数据:\flatter:terminal上的“DerslikList”实例?我应该怎么做?如果你知道答案,请与我分享你的观点使用序列化生成代码
Unhandled Exception: type 'int' is not a subtype of type 'String'
class DerslikListesiGosterScreen extends StatefulWidget {
static final String id = "derslik_listesli_goster_screen";
final int sonAktifSezonId;
final int sonAktifOkulId;
final String strTarih;
final String nTarih;
DerslikListesiGosterScreen({
this.sonAktifSezonId,
this.sonAktifOkulId,
this.strTarih,
this.nTarih,
});
@override
_DerslikListesiGosterScreenState createState() =>
_DerslikListesiGosterScreenState();
}
class _DerslikListesiGosterScreenState
extends State<DerslikListesiGosterScreen> {
DerslikList list;
var id, sinifID, derslikAd, sinifAd;
@override
void initState() {
if (widget.sonAktifSezonId != null &&
widget.sonAktifOkulId != null &&
widget.strTarih != null &&
widget.nTarih != null) {
// send token server
ApiService()
.getDerslikListesi(
widget.sonAktifSezonId,
widget.sonAktifOkulId,
widget.strTarih,
widget.nTarih,
)
.then(
(value) {
loadingHide(context);
if (value == null) {
showCustomDialog(context,
title: "Giriş Hatası", subTitle: value.toString());
} else {
list = value;
print(list);
id = list.derslerinListesi[0].id;
sinifID = list.derslerinListesi[0].sinifID;
derslikAd = list.derslerinListesi[0].derslikAd;
sinifAd = list.derslerinListesi[0].sinifAd;
}
},
);
} else {
showCustomDialog(context,
title: "Giriş Hatası",
subTitle: "Lütfen kullanıcı adı ve şifre giriniz");
}
super.initState();
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Derslik Listesi'),
),
body: Column(
children: [
Text('${derslikAd}'),
Text('${sinifAd}'),
],
));
}
}
int sinifID;
class DerslikListesiModel {
int id;
String derslikAd;
String sinifID; <-- this should be an int
String sinifAd;
}