requestList<T> method

Future<List<T>> requestList<T>(
  1. String path, {
  2. String? baseUrl,
  3. HttpMethod method = HttpMethod.get,
  4. Options? options,
  5. dynamic data,
  6. Map<String, dynamic>? query,
  7. required T fromJson(
    1. dynamic json
    ),
  8. bool showLoading = false,
  9. CancelToken? cancelToken,
  10. void onSendProgress(
    1. int,
    2. int
    )?,
  11. void onReceiveProgress(
    1. int,
    2. int
    )?,
})

请求并逐项解析数组响应,避免通过泛型强转推断列表类型。

Implementation

Future<List<T>> requestList<T>(
  String path, {
  String? baseUrl,
  HttpMethod method = HttpMethod.get,
  Options? options,
  dynamic data,
  Map<String, dynamic>? query,
  required T Function(dynamic json) fromJson,
  bool showLoading = false,
  CancelToken? cancelToken,
  void Function(int, int)? onSendProgress,
  void Function(int, int)? onReceiveProgress,
}) async {
  final raw = await request<dynamic>(
    path,
    baseUrl: baseUrl,
    method: method,
    options: options,
    data: data,
    query: query,
    showLoading: showLoading,
    cancelToken: cancelToken,
    onSendProgress: onSendProgress,
    onReceiveProgress: onReceiveProgress,
  );
  if (raw is! List) {
    throw const FormatException('Expected a JSON array response body');
  }
  return raw.map<T>(fromJson).toList(growable: false);
}