Flutter _TypeError(类型“列表< dynamic>”不是类型“列表”的子类型< TeamID>)

u5rb5r59  于 2023-01-27  发布在  Flutter
关注(0)|答案(2)|浏览(147)

我已经定义了一个链表模型,调用并存储了其中的数据,但是仍然显示错误,它是一个链表
我的代码

class TeamsController with ChangeNotifier {
  List<TeamID> teamslist = [];

  TeamsController() {
    getMyTeams();
  }

  getMyTeams() async {
    var response = await ApiService().getMyCreatedTeams();
    if (response != null) {
      final databody = json.decode(response);
      debugPrint(databody['data'].toString());
      teamslist =
          databody['data'].map((item) => TeamID.fromJson(item)).toList();

      notifyListeners();
    }
  }
}

它在团队列表上显示_TypeError错误(类型"List"不是类型"List"的子类型)
它的工作,如果我第一次存储在这样的列表

final List list = databody['data'];
  teamslist = list.map((item) => TeamID.fromJson(item)).toList();
ocebsuys

ocebsuys1#

您可以将主列表指定为List<dynamic>,如下所示:

class TeamsController with ChangeNotifier {
  List<dynamic> teamslist = [];

  TeamsController() {
    getMyTeams();
  }

  getMyTeams() async {
    var response = await ApiService().getMyCreatedTeams();
    if (response != null) {
      final databody = json.decode(response);
      debugPrint(databody['data'].toString());
      teamslist =
          databody['data'].map((item) => TeamID.fromJson(item)).toList();

      notifyListeners();
    }
  }
}

这是可行的,但如果你想知道类型,那么你可以先检查类型,然后分配类型给它。

print(databody['data'].map((item) => TeamID.fromJson(item)).toList().runtimeType);

之后,您可以将teamslist赋给该类型。

rlcwz9us

rlcwz9us2#

您所展示的代码看起来很合理。

List<TeamID> teamslist = [];
  ...
      teamslist =
          databody['data'].map((item) => TeamID.fromJson(item)).toList();

如果 * TeamID.fromJson()的返回类型是TeamID,那么Dart的类型推断将按照您所期望的 * 来键入此赋值。
因此,请检查您对TeamID.fromJson()的定义或在您的问题中发布其代码。
(Note,在这种情况下没有使用dynamic的令人信服的理由。)

相关问题