错误“_InternalLinkedHashMap<String, dynamic>”不是“Iterable<dynamic>”类型的子类型

use*_*349 2 dart flutter fluttermap

显示从具有搜索功能的第三方 API 获取的 A-List 错误仅在我运行应用程序时显示,它说 _InternalLinkedHashMap<String, dynamic>' 不是'Iterable 类型的子类型

请Welp *** Edit A new Error Showed after play the code this error shows type 'String' is not a subtype of type 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();
              }
Run Code Online (Sandbox Code Playgroud)

数据模型类

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'],
      
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

错误

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)
Run Code Online (Sandbox Code Playgroud)

lrn*_*lrn 5

的值responseJson是一张地图。您正在尝试对其进行for ... in处理,并且仅适用于可迭代对象,而地图不是可迭代对象。

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

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

...
setState(() {
  _searchResult.add(StoreDetails.fromJson(responseJson));
});
...
Run Code Online (Sandbox Code Playgroud)

(我对 Flutter 不太了解,不知道对状态进行异步初始化是否是一种好习惯,但我认为它很危险 - 例如,小部件可能会在setState调用之前被销毁)。