当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart Uri构造函数用法及代码示例


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。

每个组件都是通过一个命名参数设置的。可以提供任意数量的组件。 pathquery 组件可以使用两个不同的命名参数之一进行设置。

通过 scheme 设置方案组件。该方案被规范化为所有小写字母。如果方案被省略或为空,则 URI 将没有方案部分。

权限组件的用户信息部分通过 userInfo 设置。它默认为空字符串,将从 URI 的字符串表示中省略。

权限组件的主机部分通过 host 设置。主机可以是主机名、IPv4 地址或 IPv6 地址,包含在 '['']' 中。如果主机包含':' 字符,则添加'['']'(如果尚未提供)。主机被规范化为所有小写字母。

权限组件的端口部分通过 port 设置。如果省略 portnull ,则表示 URI 方案的默认端口,等效于显式传递该端口。已识别的方案及其默认端口为"http" (80) 和"https" (443)。所有其他方案都被视为将零作为默认端口。

如果提供了 userInfohostport 中的任何一个,则 URI 具有根据 hasAuthority 的权限。

路径组件通过 pathpathSegments 设置。当使用path 时,它应该是一个有效的URI 路径,但如果需要,除了通用分隔符':/@[]?#' 之外的无效字符将被转义。当使用pathSegments 时,每个提供的段首先进行百分比编码,然后使用正斜杠分隔符连接。

路径段的percent-encoding 对除未保留字符和以下字符列表之外的所有字符进行编码:!$&'()*+,;=:@。如果其他组件需要绝对路径,则前面的斜杠 / 如果不存在,则在前面添加。

查询组件通过 queryqueryParameters 设置。当使用query 时,提供的字符串应该是有效的 URI 查询,但如果需要,将转义除常规分隔符之外的无效字符。当使用queryParameters 时,查询是根据提供的Map构建的。映射中的每个键和值都是百分比编码的,并使用相等和 & 字符连接。映射中的值必须是字符串或 Iterable 字符串,其中后者对应于同一键的多个值。

键和值的 percent-encoding 对除未保留字符之外的所有字符进行编码,并将空格替换为 + 。如果query为空字符串,则相当于省略。要获得实际的空查询部分,请为 queryParameters 使用空映射。

如果 queryqueryParameters 都被省略或 null ,则 URI 没有查询部分。

片段组件通过 fragment 设置。它应该是一个有效的 URI 片段,但如果需要,除了一般分隔符之外的无效字符会被转义。如果省略 fragmentnull ,则 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.dev大神的英文原创作品 Uri constructor。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。