You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter API数据获取报错:_Map<String,dynamic>与FutureOr<List<dynamic>>类型不匹配

解决Flutter API数据类型不匹配错误:type '_Map<String, dynamic>' is not a subtype of type 'FutureOr<List<dynamic>>'

错误原因

API返回的完整响应是包含results数组的Map对象,但当前CharactersWebServices类的getAllCharacters方法直接返回了整个响应Map,而方法声明的返回类型是List<dynamic>,导致类型不匹配。此外,Character模型类中origin和location被错误定义为List<dynamic>,但API返回的这两个字段是单个对象(Map类型),后续也会引发类型错误。

修复步骤

1. 修正网络请求类(CharactersWebServices)

修改getAllCharacters方法,返回响应中的results数组而非整个Map:

import 'package:dio/dio.dart';
import 'package:study_bloc/constant/strings.dart';

class CharactersWebServices {
  late Dio dio;

  CharactersWebServices() {
    BaseOptions options = BaseOptions(
      baseUrl: baseUrl,
      receiveDataWhenStatusError: true,
      connectTimeout: const Duration(seconds: 20),
      receiveTimeout: const Duration(seconds: 20),
    );

    dio = Dio(options);
  }
  Future<List<dynamic>> getAllCharacters() async {
    try {
      Response response = await dio.get('character');
      print(response.data.toString());
      // 提取API响应中的results数组返回
      return response.data['results'];
    } catch (e) {
      print(e.toString());
      return [];
    }
  }
}

2. 修正模型类(Character)

将origin和location的类型改为Map<String, dynamic>,同时将episode类型优化为更具体的List<String>:

class Character {
  late int id;
  late String name;
  late String status;
  late String species;
  late String type;
  late String gender;
  late Map<String, dynamic> origin;
  late Map<String, dynamic> location;
  late String image;
  late List<String> episode;

  Character.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    name = json['name'];
    status = json['status'];
    species = json['species'];
    type = json['type'];
    gender = json['gender'];
    origin = json['origin'];
    location = json['location'];
    image = json['image'];
    episode = List<String>.from(json['episode']);
  }
}

验证说明

修改后,CharactersWebServices返回的是正确的字符列表数组,Character.fromJson能正确解析每个字符对象,包括origin、location和episode字段,彻底解决类型不匹配问题。

内容的提问来源于stack exchange,提问作者Mohammad Jaber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 09:35:57