replace抽象方法

Uri replace({
  1. String? scheme,
  2. String? userInfo,
  3. String? host,
  4. int? port,
  5. String? path,
  6. Iterable<String>? pathSegments,
  7. String? query,
  8. Map<String, dynamic>? queryParameters,
  9. String? fragment,
})

根据当前Uri创建一个新的Uri对象,但某些部分已被替换。

此方法接受与Uri构造函数相同的参数,并且具有相同的含义。

最多只能提供pathpathSegments中的一个。同样,最多只能提供queryqueryParameters中的一个。

未提供的每个部分都将默认为来自此Uri的对应值。

此方法与Uri.resolve不同,后者按层次结构覆盖,并且可以逐个替换Uri的各个部分。

示例

final uri1 = Uri.parse(
    'https://dart.ac.cn/guides/libraries/library-tour#utility-classes');

final uri2 = uri1.replace(
    scheme: 'https',
    path: 'guides/libraries/library-tour',
    fragment: 'uris');
print(uri2); // https://dart.ac.cn/guides/libraries/library-tour#uris

此方法的行为类似于使用Uri构造函数,其中一些参数取自此Uri。示例

final Uri uri3 = Uri(
    scheme: 'https',
    userInfo: uri1.userInfo,
    host: uri1.host,
    port: uri2.port,
    path: '/guides/language/language-tour',
    query: uri1.query,
    fragment: null);
print(uri3); // https://dart.ac.cn/guides/language/language-tour

使用此方法可以看作是上面Uri构造函数调用的简写,但可能稍微快一点,因为从此Uri中取出的部分无需再次检查其有效性。

实现

Uri replace(
    {String? scheme,
    String? userInfo,
    String? host,
    int? port,
    String? path,
    Iterable<String>? pathSegments,
    String? query,
    Map<String, dynamic /*String?|Iterable<String>*/ >? queryParameters,
    String? fragment});