replace抽象方法
根据当前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});