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