extractList<R> method

List<R> extractList<R>(
  1. String key,
  2. R fromJson(
    1. Map<String, dynamic> json
    )
)

从 Map 中提取列表字段并转换为模型列表 适用于从 Map<String, dynamic> 中提取 List 字段并转换为模型列表

如果数据不是 Map 类型或字段不是 List,自动返回空列表 内部已处理类型转换和异常,用户只需要提供字段名和 fromJson 函数

示例:

final users = response.extractList<User>('users', User.fromJson);
final items = response.extractList<Item>('data.items', Item.fromJson);

Implementation

List<R> extractList<R>(
  String key,
  R Function(Map<String, dynamic> json) fromJson,
) {
  return extract<List<R>>((data) {
        if (data is! Map<String, dynamic>) return [];
        final list = data[key];
        if (list is! List) return [];
        return list
            .whereType<Map<String, dynamic>>()
            .map((item) => fromJson(item))
            .toList();
      }) ??
      [];
}