當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。