首页 > 解决方案 > 未处理的异常:'String' 类型不是'index' 的'int' 类型的子类型问题 Dart 和颤动

问题描述

我有这个变量问题这是我的getdata功能

Future <List <Deal>> getData() async{


String myUrl = "http://10.25.20.27:5000/api/all";
var response = await http.get(myUrl,
    headers: {
      'Accept':'application/json',

    });

var jsonData = json.decode(response.body);

List<Deal> deals =[];

var u;

for( u in jsonData){

  Deal deal = Deal(u["id"],u["name"],u["adress"],u["photo"],u["Description"],u["discount"]);

}


return deals;
}

我得到了这个错误

正在执行热重新加载...在 902 毫秒内重新加载了 594 个库中的 14 个。E/flutter(4211):[错误:flutter/lib/ui/ui_dart_state.cc(148)] 未处理的异常:“String”类型不是“index”E/flutter(4211)的“int”类型的子类型: #0 DatabaseHelper.getData (package:flutter_app/databasehelper.dart:116:25) E/flutter (4211): E/flutter (4211): #1 _HomeePageState.build。(package:flutter_app/homee_page.dart:100:80) E/flutter (4211): #2 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:654:14) E/flutter (4211): # 3 _InkResponseState.build。(package:flutter/src/material/ink_well.dart:729:32) E/flutter (4211): #4 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24) E/flutter ( 4211):#5 TapGestureRecognizer._checkUp(包:

标签: flutterdart

解决方案


我认为您可以创建如下所示的“交易”类:-

class Deal {
  String id;
  String name;
  String adress;
  String photo;
  String Description;
  String discount;

  Deal(
    this.id,
    this.name,
    this.adress,
    this.photo,
    this.Description,
    this.discount,
  );
}

然后你可以使用如下循环: -

var u;
for (u in jsonData) {
      Deal deal = Deal(
          u["id"].toString(),
          u["name"].toString(),
          u["adress"].toString(),
          u["photo"].toString(),
          u["Description"].toString(),
          u["discount"].toString());
}

推荐阅读