dart:core
库中Uri构造函数
的用法介绍如下。
用法:
Uri(
{String? scheme,
String? userInfo,
String? host,
int? port,
String? path,
Iterable<String>? pathSegments,
String? query,
Map<String, dynamic>? queryParameters,
String? fragment}
)
从其组件创建一个新的 URI。
每个组件都是通过一个命名参数设置的。可以提供任意数量的组件。 path
和query
组件可以使用两个不同的命名参数之一进行设置。
通过 scheme
设置方案组件。该方案被规范化为所有小写字母。如果方案被省略或为空,则 URI 将没有方案部分。
权限组件的用户信息部分通过 userInfo
设置。它默认为空字符串,将从 URI 的字符串表示中省略。
权限组件的主机部分通过 host
设置。主机可以是主机名、IPv4 地址或 IPv6 地址,包含在 '['
和 ']'
中。如果主机包含':' 字符,则添加'['
和']'
(如果尚未提供)。主机被规范化为所有小写字母。
权限组件的端口部分通过 port
设置。如果省略 port
或 null
,则表示 URI 方案的默认端口,等效于显式传递该端口。已识别的方案及其默认端口为"http" (80) 和"https" (443)。所有其他方案都被视为将零作为默认端口。
如果提供了 userInfo
、 host
或 port
中的任何一个,则 URI 具有根据 hasAuthority 的权限。
路径组件通过 path
或 pathSegments
设置。当使用path
时,它应该是一个有效的URI 路径,但如果需要,除了通用分隔符':/@[]?#' 之外的无效字符将被转义。当使用pathSegments
时,每个提供的段首先进行百分比编码,然后使用正斜杠分隔符连接。
路径段的percent-encoding 对除未保留字符和以下字符列表之外的所有字符进行编码:!$&'()*+,;=:@
。如果其他组件需要绝对路径,则前面的斜杠 /
如果不存在,则在前面添加。
查询组件通过 query
或 queryParameters
设置。当使用query
时,提供的字符串应该是有效的 URI 查询,但如果需要,将转义除常规分隔符之外的无效字符。当使用queryParameters
时,查询是根据提供的Map构建的。映射中的每个键和值都是百分比编码的,并使用相等和 & 字符连接。映射中的值必须是字符串或 Iterable 字符串,其中后者对应于同一键的多个值。
键和值的 percent-encoding 对除未保留字符之外的所有字符进行编码,并将空格替换为 +
。如果query
为空字符串,则相当于省略。要获得实际的空查询部分,请为 queryParameters
使用空映射。
如果 query
和 queryParameters
都被省略或 null
,则 URI 没有查询部分。
片段组件通过 fragment
设置。它应该是一个有效的 URI 片段,但如果需要,除了一般分隔符之外的无效字符会被转义。如果省略 fragment
或 null
,则 URI 没有片段部分。
例子:
final httpsUri = Uri(
scheme: 'https',
host: 'dart.dev',
path: 'guides/libraries/library-tour',
fragment: 'numbers');
print(httpsUri); // https://dart.dev/guides/libraries/library-tour#numbers
final mailtoUri = Uri(
scheme: 'mailto',
path: 'John.Doe@example.com',
queryParameters: {'subject': 'Example'});
print(mailtoUri); // mailto:John.Doe@example.com?subject=Example
相关用法
- Dart UriData.parse用法及代码示例
- Dart Uri.decodeFull用法及代码示例
- Dart Uri.replace用法及代码示例
- Dart Uri.parse用法及代码示例
- Dart Uri.dataFromString用法及代码示例
- Dart Uri.tryParse用法及代码示例
- Dart UriData.mimeType用法及代码示例
- Dart Uri.encodeComponent用法及代码示例
- Dart Uri.directory用法及代码示例
- Dart Uri.toFilePath用法及代码示例
- Dart Uri.file用法及代码示例
- Dart Uri.decodeComponent用法及代码示例
- Dart Uri用法及代码示例
- Dart Uri.dataFromBytes用法及代码示例
- Dart Uri.removeFragment用法及代码示例
- Dart Uri.splitQueryString用法及代码示例
- Dart Uri.http用法及代码示例
- Dart Uri.https用法及代码示例
- Dart Uri.queryParametersAll用法及代码示例
- Dart Uri.isScheme用法及代码示例
- Dart Uri.encodeFull用法及代码示例
- Dart Uri.queryParameters用法及代码示例
- Dart Utf8Decoder用法及代码示例
- Dart UnmodifiableMapView用法及代码示例
- Dart Uint8List.sublist用法及代码示例
注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 Uri constructor。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。