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构造函数相同,并且具有相同的意义。

必传参数path和pathSegments中最多只能有一个。同样,必传参数query和queryParameters也最多只能有一个。

未提供的内容将默认使用当前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});