,dart"/>

首页 > 解决方案 > 映射中的值类型错误是

问题描述

我正在尝试构建一个如下所示的 https Uri:

  static Uri accountGetFavoriteMovies(int accountId, LoginInformation loginInfo,
      {int page = 1}) {
    final url = '/account/$accountId/favorite/movies';
    final uri = _resolveUri(
      url,
      query: {
        'api_key': _apiKey,
        'session_id': loginInfo.sessionId,
        'page': page,
      },
    );
    return uri;
  }

_resolveUri 所做的只是对 Uri.https 构造函数的包装:

Uri _resolveUri(String path, {Map<String, dynamic>? query}) {
  return Uri.https(
    _authority,
    _basePath + path,
    query,
  );
}

从理论上讲,这应该可以正常工作,但是当我对其进行测试时,我收到了以下消息:

type 'int' 不是 type 的子类型Iterable<dynamic>

问题出在哪里?

由于这个堆栈,我确信问题出在查询参数中:

_resolveUri
_AccountUrls.accountGetFavoriteMovies
_AccountRequest.favoriteMoviesRequest

标签: dart

解决方案


虽然 for 的类型queryParametersMap<String, dynamic>,但预期的值Uri.https实际上是Stringor Iterable<String>

Uri在尝试调试您的问题时,我在 github 上的库的源代码中找到了此评论。

映射中的值必须是 aString或 an Iterableof strings,其中后者对应于同一键的多个值。

报价来源

其他重要评论


推荐阅读