未处理的异常:类型“_InternalLinkedHashMap<String, dynamic>”不是类型 'HashMap<String, dynamic>' Dart 的子类型

Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'HashMap<String, dynamic>' Dart

下面有回复

[
    {
        "name": "Kamchatka",
        "about": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime mollitia,molestiae quas vel sint commodi repudiandae consequuntur voluptatum laborumnumquam blanditiis harum quisquam eius sed odit fugiat iusto fuga praesentium optio, eaque rerum! Provident similique accusantium nemo autem.",
        "email": "kamchatka@mail.com",
        "index": 1,
        "picture": "https://thispersondoesnotexist.com/"
    },
    {
        "name": "Valjakutse",
        "about": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime mollitia,molestiae quas vel sint commodi repudiandae consequuntur voluptatum laborumnumquam blanditiis harum quisquam eius sed odit fugiat iusto fuga praesentium optio, eaque rerum! Provident similique accusantium nemo autem.",
        "email": "valjakutse@mail.com",
        "index": 2,
        "picture": "https://thispersondoesnotexist.com/"
    },
    {
        "name": "Shipment",
        "about": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Maxime mollitia,molestiae quas vel sint commodi repudiandae consequuntur voluptatum laborumnumquam blanditiis harum quisquam eius sed odit fugiat iusto fuga praesentium optio, eaque rerum! Provident similique accusantium nemo autem.",
        "email": "shipment@mail.com",
        "index": 3,
        "picture": "https://thispersondoesnotexist.com/"
    }
]

我有一个异步的 Future,应该接收响应并将其转换为如下所示的 HashMap 列表


  Future<List<HashMap<String, dynamic>>> _fetchUsersListHashMap() async {
    try {
      final response = await http.get(Uri.parse("https://jsonkeeper.com/b/XBCA"));

      late List<HashMap<String, dynamic>> responseList;

      responseList = List<HashMap<String, dynamic>>.from(json.decode(response.body));
    
      String stringList = jsonEncode(responseList);

      log("FetchUsersListHashMap $stringList");

      return responseList;

    } catch (e) {

      log("FetchUsersListHashMapException $e");

      rethrow;
    }
  }

当我调用 _fetchUsersListHashMap 时出现以下错误


Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'HashMap<String, dynamic>'

我什至尝试改变我分配 responseList 的方式

responseList = json.decode(response.body);

但它没有将 HashMap 列表分配给 url

的响应

以下是我在 java 中的做法,只是我无法在 flutter 中复制相同的概念

  List<HashMap<String, Object>> responseList = new Gson().fromJson(response,
                                new TypeToken<List<HashMap<String, Object>>>() {
                                }.getType());

试试这个:

  List<HashMap<String, dynamic>> responseList = [];
  List jsonList = List.from(jsonDecode(response.body));
  jsonList.forEach((element) {
    responseList.add(HashMap.from(Map.from(element)));
  });
Future<List<HashMap<String, dynamic>>> _fetchUsersListHashMap() async {
 try {
  final response = await http.get(Uri.parse("https://jsonkeeper.com/b/XBCA"));

  final decoded = json.decode(response.body);

  final responseList = decoded
    .map<HashMap<String, dynamic>>((e) => HashMap<String, dynamic>.from(e))
    .toList();

  String stringList = jsonEncode(responseList);

  log("FetchUsersListHashMap $stringList");

  return responseList;
} catch (e) {
  log("FetchUsersListHashMapException $e");

  rethrow;
 }
}