Flutter 错误'_内部链接dhashmap<;字符串,动态>';不是类型为';Iterable<;动态>';

Flutter 错误'_内部链接dhashmap<;字符串,动态>';不是类型为';Iterable<;动态>';,flutter,dart,fluttermap,Flutter,Dart,Fluttermap,使用搜索功能显示从第三方API获取的A-List 该错误仅在我运行应用程序时显示,它表示_InternalLinkedHashMap“不是”Iterable类型的子类型 请欢迎 ***编辑播放此错误显示的代码后显示的新错误 类型“String”不是Map dynamic、dynamic类型的子类型- Future getStoreDetails()异步{ var basicAuth='Basic'+ base64Encode(utf8.encode('api_标记_键'); var结果; var

使用搜索功能显示从第三方API获取的A-List 该错误仅在我运行应用程序时显示,它表示_InternalLinkedHashMap“不是”Iterable类型的子类型

请欢迎 ***编辑播放此错误显示的代码后显示的新错误 类型“String”不是Map dynamic、dynamic类型的子类型-

Future getStoreDetails()异步{
var basicAuth='Basic'+
base64Encode(utf8.encode('api_标记_键');
var结果;
var response=wait http.get(url,头:{'authorization':basicAuth});
如果(response.statusCode==200){
var responseJson=json.decode(response.body);
设置状态(){
/错误在哪里
对于(响应中的地图商店详细信息){
_add(StoreDetails.fromJson(StoreDetails));
}
});
}否则如果(response.statusCode!=200){
result=“获取响应时出错:\nHttp status${response.statusCode}”;
打印(结果);
}
}
@凌驾
void initState(){
super.initState();
getStoreDetails();
}
数据模型类

class StoreDetails {
  final int businessunitid;
  String citydescription;

  StoreDetails({
    this.businessunitid,
    this.citydescription,
  });

   factory StoreDetails.fromJson(Map<String, dynamic> data) {
    return new StoreDetails(
      businessunitid: data['businessunitid'],
      citydescription: data['citydescription'],
      
    );
  }
}
类存储详细信息{
最终国际商业联合会;
字符串citydescription;
商店详情({
这是商业联合体,
这个城市的描述,
});
factory StoreDetails.fromJson(地图数据){
返回新的StoreDetails(
businessunitid:data['businessunitid'],
citydescription:数据['citydescription'],
);
}
}
错误

E/flutter ( 3566): type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Iterable<dynamic>'
E/flutter ( 3566): #0      SearchStoreState.getStoreDetails.<anonymous closure> (package:rsc_prototype/screens/searchstore_screen.dart:43:34)
E/flutter ( 3566): #1      State.setState (package:flutter/src/widgets/framework.dart:1125:30)
E/flutter ( 3566): #2      SearchStoreState.getStoreDetails (package:rsc_prototype/screens/searchstore_screen.dart:42:7)
E/flutter ( 3566): <asynchronous suspension>
E/flutter ( 3566): #3      SearchStoreState.initState (package:rsc_prototype/screens/searchstore_screen.dart:56:5)
E/flutter ( 3566): #4      StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3751:58)
E/flatter(3566):类型“\u InternalLinkedHashMap”不是类型“Iterable”的子类型
E/flatter(3566):#0 SearchStoreState.getStoreDetails。(包装:rsc_原型/屏幕/搜索商店_屏幕。dart:43:34)
E/flatter(3566):#1 State.setState(包:flatter/src/widgets/framework.dart:1125:30)
E/flatter(3566):#2 SearchStoreState.getStoreDetails(包:rsc_原型/屏幕/searchstore_屏幕。dart:42:7)
E/颤振(3566):
E/flatter(3566):#3 SearchStoreState.initState(包:rsc_prototype/screens/searchstore_screen.dart:56:5)
E/flatter(3566):#4 StatefulElement._firstBuild(包:flatter/src/widgets/framework.dart:3751:58)

响应JSON的值是一个映射。您正在尝试为…执行
。。。在它上面的
中,这只适用于iterables,而地图不是iterables

您需要弄清楚接收到的JSON的结构。它可能包含您想要迭代的列表,或者您想要迭代
responseJson.values
。如果不知道格式和你想用它做什么,就不可能知道

如果,正如您在下面的评论中所说,JSON是一个单一对象,那么您的代码应该是:

...
setState(() {
  _searchResult.add(StoreDetails.fromJson(responseJson));
});
...

(我对颤振的了解还不够,不知道对状态进行异步初始化是否是一种好的做法,但我认为这是危险的-例如,在调用
设置状态之前,小部件可能会被破坏)。

如果您使用的是php,这是一个its工作示例,请记住这是
的json\U编码($udresponse['userdetails']);
返回所需的适当数组格式,然后在
数组推送($udresponse['userdetails',$userdetails);
将每个项添加到数组中

$udresponse["userdetails"] = array();
$query = mysqli_query($db->connect(),"SELECT * FROM employee WHERE  Employee_Id ='$UserId'") or die(mysqli_error());
if (mysqli_num_rows($query) > 0) {
    while ($row = mysqli_fetch_array($query)) {
        $userdetails= array();
        // user details
        $userdetails["customerid"]=$row["Employee_Id"];
        $userid=$row["Employee_Id"];
        $userdetails["username"]=$UserName;
        $userdetails["fullname"]=$Fullname;
        $userdetails["email"]=$Email;
        $userdetails["phone"]=$Phone;
        $userdetails["role"]=$UserRole;
        $userdetails["restaurantid"]=$RestaurantId;
        array_push($udresponse['userdetails'],$userdetails);
    }  
    $udresponse["success"] = 1;
    $udresponse["message"] = "sign in Successful";
    //echo json_encode($response);
    echo json_encode($udresponse['userdetails']);
} else {   
    $udresponse["success"] = 2;
    $udresponse["message"] = "error retrieving employee details";
    echo json_encode($udresponse);
}

{“ID”:0,“BusinessUnitID”:1,“CompanyCode”:“Code”,“Number”:419,“Name”:“Some Name”,“ShortName”:“ShortName”,“City”:“City City”}JSON格式是这样的,我只想检索城市和商业单位的列表和搜索功能,只是通过这篇文章了解了JSON的不同结构,谢谢您的回答,JSON不是MMAS:您有一个错误的列表。需要一个参数。请考虑在NST上切换错误模式。这是一个很好的编程实践,谢谢AbdelAziz AbdelLatef。
$udresponse["userdetails"] = array();
$query = mysqli_query($db->connect(),"SELECT * FROM employee WHERE  Employee_Id ='$UserId'") or die(mysqli_error());
if (mysqli_num_rows($query) > 0) {
    while ($row = mysqli_fetch_array($query)) {
        $userdetails= array();
        // user details
        $userdetails["customerid"]=$row["Employee_Id"];
        $userid=$row["Employee_Id"];
        $userdetails["username"]=$UserName;
        $userdetails["fullname"]=$Fullname;
        $userdetails["email"]=$Email;
        $userdetails["phone"]=$Phone;
        $userdetails["role"]=$UserRole;
        $userdetails["restaurantid"]=$RestaurantId;
        array_push($udresponse['userdetails'],$userdetails);
    }  
    $udresponse["success"] = 1;
    $udresponse["message"] = "sign in Successful";
    //echo json_encode($response);
    echo json_encode($udresponse['userdetails']);
} else {   
    $udresponse["success"] = 2;
    $udresponse["message"] = "error retrieving employee details";
    echo json_encode($udresponse);
}