当前位置: 首页 > 知识库问答 >
问题:

错误“\u InternalLinkedHashMap”不是“Iterable”类型的子类型

雍焱
2023-03-14

使用搜索函数显示从第三方API获取的A-List该错误仅在我运行应用程序时显示,显示为_InternalLinkedHashMap

请欢迎***编辑一个新的错误显示在玩代码后此错误显示类型'String'不是Map dynamic,dynamic类型的子类型-

        Future<Null> getStoreDetails() async {
                var basicAuth = 'Basic ' +
                    base64Encode(utf8.encode('api_token_key'));
                var result;
             
                var response = await http.get(url, headers: {'authorization': basicAuth});
                if (response.statusCode == 200) {
                  var responseJson = json.decode(response.body);
                  setState(() {
             /Where the error is 
                    for (Map storedetails in responseJson) {
                      _searchResult.add(StoreDetails.fromJson(storedetails));
                    }
                  });
                } else if (response.statusCode != 200) {
                  result = "Error getting response:\nHttp status ${response.statusCode}";
                  print(result);
                }
              }
              @override
              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'],
      
    );
  }
}

错误

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)

共有2个答案

万俟招
2023-03-14

如果您正在使用php,这是一个its工作示例,还记得这个'json_encode($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);
}

常炯
2023-03-14

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

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

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

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

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

 类似资料:
  • 我对Flutter更陌生。我想从API中获取类别和产品信息。我对类别没有问题,但是当获取产品时,我得到错误"未处理的异常:类型'_InternalLinkedHashMap 我看到了许多这一错误的例子,但我无法将其与我自己联系起来。 (产品Api) (产品类别)

  • 我是颤振开发方面的新手。我犯了一个错误 列表不是“Iterable”类型的子类型 到目前为止,我已经做到了。 模范班 缅因州班内 } 我试图从2天开始解决这个问题。 请帮忙,谢谢。 这里是JSON响应,您可以检查链接

  • 我试图将build_value和json_serializable结合起来,解析从服务器到模型类的json响应。 以下是依赖项: 下面是我编写的代码 序列化器类代码: 以下是我从服务器得到的响应。 最后,我尝试使用以下代码行进行解析 但是我得到以下错误 请说明可能导致此问题的原因。

  • //我正在尝试此代码,但它没有添加到firebase //它给出了这些错误 处理手势时引发了以下_TypeError:类型“List”不是类型“String”的子类型 抛出异常时,这是堆栈:#0个SharedReferences。getString(包:共享首选项/共享首选项。dart:98:35)#1 CheckItemInNot(包:e_shop/Store/storehome.dart:33

  • 我刚刚学会了如何在flutter中使用。在使用这个库之前,我用实现的webservice工作正常。 现在,在更改为使用后,出现了错误,无法解决此问题 错误是: _InternalLinkedHashMap不是“BuiltRegister”类型的子类型 我的服务器只获取移动电话号码,这是json响应结构: 我构建具有结构的寄存器: 终端返回中的命令成功,我没有任何问题,现在这是我的实现: 和拦截器实

  • 我有一个错误,当试图解析我的JSON并显示在文本中,而不是作为一个。 下面是我的JSON结构。 这是我的未来API异步。 这是我显示JSON的代码。 当我试图获取数据时,我得到了这样的错误。 我应该修复哪个代码?