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

使用Retrofit发起Get请求遇类型不匹配错误,如何修复?

错误修复方案

错误type 'Future<dynamic>' is not a subtype of type 'Future<List<UserRequest>>?'的核心原因是RepoClass的getUsersData方法没有返回指定类型的结果,导致FutureBuilder接收的Future类型不匹配。

具体修复步骤:

  1. 修改repo_class.dart中的getUsersData方法:
    • 明确声明返回类型为Future<List<UserRequest>>
    • 添加return语句返回获取到的用户数据

修改后的代码:

import 'package:dio/dio.dart';

import 'api_client.dart';
import 'model.dart';

class RepoClass {
  late APIClient mClient;
  RepoClass() {
    mClient = APIClient(Dio());
  }

  // 明确返回类型,并返回用户数据
  Future<List<UserRequest>> getUsersData() async {
    List<UserRequest> usersResponse = await mClient.getUsers();
    print('repo_class is ${usersResponse}');
    return usersResponse;
  }
}
  1. 验证main.dart中的调用逻辑:
    此时repoClass.getUsersData()会返回正确的Future<List<UserRequest>>,与FutureBuilder的泛型参数完全匹配,类型错误即可解决。

额外优化建议(可选):

  • 不要在_buildBody方法中每次创建新的RepoClass实例,建议将其作为类成员变量在initState中初始化,避免重复创建对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:52:24