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});