Json 未处理的异常:类型';int';不是类型为';字符串';在颤振应用程序中

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

我正在尝试做一个包含API的示例

下面是我想要返回的示例API:

[
    {
        "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;
}