A parsed URI, such as a URL.
To create a URI with specific components, use Uri.new:
var httpsUri = Uri(
scheme: 'https',
host: 'dart.dev',
path: '/guides/libraries/library-tour',
fragment: 'numbers');
print(httpsUri); // https://dart.cn/guides/libraries/library-tour#numbers
httpsUri = Uri(
scheme: 'https',
host: 'example.com',
path: '/page/',
queryParameters: {'search': 'blue', 'limit': '10'});
print(httpsUri); // https://example.com/page/?search=blue&limit=10
final mailtoUri = Uri(
scheme: 'mailto',
path: 'John.Doe@example.com',
queryParameters: {'subject': 'Example'});
print(mailtoUri); // mailto:John.Doe@example.com?subject=Example
HTTP and HTTPS URI
To create a URI with https scheme, use Uri.https or Uri.http:
final httpsUri = Uri.https('example.com', 'api/fetch', {'limit': '10'});
print(httpsUri); // https://example.com/api/fetch?limit=10
File URI
To create a URI from file path, use Uri.file:
final fileUriUnix =
Uri.file(r'/home/myself/images/image.png', windows: false);
print(fileUriUnix); // file:///home/myself/images/image.png
final fileUriWindows =
Uri.file(r'C:\Users\myself\Documents\image.png', windows: true);
print(fileUriWindows); // file:///C:/Users/myself/Documents/image.png
If the URI is not a file URI, calling this throws UnsupportedError.
Directory URI
Like Uri.file except that a non-empty URI path ends in a slash.
final fileDirectory =
Uri.directory('/home/myself/data/image', windows: false);
print(fileDirectory); // file:///home/myself/data/image/
final fileDirectoryWindows = Uri.directory('/data/images', windows: true);
print(fileDirectoryWindows); // file:///data/images/
URI from string
To create a URI from string, use Uri.parse or Uri.tryParse:
final uri = Uri.parse(
'https://dart.cn/guides/libraries/library-tour#utility-classes');
print(uri); // https://dart.cn
print(uri.isScheme('https')); // true
print(uri.origin); // https://dart.cn
print(uri.host); // dart.dev
print(uri.authority); // dart.dev
print(uri.port); // 443
print(uri.path); // guides/libraries/library-tour
print(uri.pathSegments); // [guides, libraries, library-tour]
print(uri.fragment); // utility-classes
print(uri.hasQuery); // false
print(uri.data); // null
See also:
- URIs in the library tour
- RFC-3986
- RFC-2396
- RFC-2045
Constructors
-
Uri({String? scheme, String? userInfo, String? host, int? port, String? path, Iterable<
String> ? pathSegments, String? query, Map<String, dynamic> ? queryParameters, String? fragment}) -
Creates a new URI from its components.
factory
-
Uri.dataFromBytes(List<
int> bytes, {String mimeType = "application/octet-stream", Map<String, String> ? parameters, bool percentEncoded = false}) -
Creates a
data:
URI containing an encoding ofbytes
.factory -
Uri.dataFromString(String content, {String? mimeType, Encoding? encoding, Map<
String, String> ? parameters, bool base64 = false}) -
Creates a
data:
URI containing thecontent
string.factory - Uri.directory(String path, {bool? windows})
-
Like Uri.file except that a non-empty URI path ends in a slash.
factory
- Uri.file(String path, {bool? windows})
-
Creates a new file URI from an absolute or relative file path.
factory
-
Uri.http(String authority, [String unencodedPath, Map<
String, dynamic> ? queryParameters]) -
Creates a new
http
URI from authority, path and query.factory -
Uri.https(String authority, [String unencodedPath, Map<
String, dynamic> ? queryParameters]) -
Creates a new
https
URI from authority, path and query.factory
Properties
-
The authority component.
no setter
- data → UriData?
-
Access the structure of a
data:
URI.no setter - fragment → String
-
The fragment identifier component.
no setter
- hasAbsolutePath → bool
-
Whether the URI has an absolute path (starting with '/').
no setter
- hasAuthority → bool
-
Whether the URI has an authority component.
no setter
- hasEmptyPath → bool
-
Whether the URI has an empty path.
no setter
- hasFragment → bool
-
Whether the URI has a fragment part.
no setter
- hashCode → int
-
Returns a hash code computed as
toString().hashCode
.no setteroverride - hasPort → bool
-
Whether the URI has an explicit port.
no setter
- hasQuery → bool
-
Whether the URI has a query part.
no setter
- hasScheme → bool
-
Whether the URI has a scheme component.
no setter
- host → String
-
The host part of the authority component.
no setter
- isAbsolute → bool
-
Whether the URI is absolute.
no setter
- origin → String
-
Returns the origin of the URI in the form scheme://host:port for the
schemes http and https.
no setter
- path → String
-
The path component.
no setter
-
pathSegments
→ List<
String> -
The URI path split into its segments.
no setter
- port → int
-
The port part of the authority component.
no setter
- query → String
-
The query component.
no setter
-
queryParameters
→ Map<
String, String> -
The URI query split into a map according to the rules
specified for FORM post in the HTML 4.01 specification section
17.13.4.
no setter
-
queryParametersAll
→ Map<
String, List< String> > -
Returns the URI query split into a map according to the rules
specified for FORM post in the HTML 4.01 specification section
17.13.4.
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- scheme → String
-
The scheme component of the URI.
no setter
- userInfo → String
-
The user info part of the authority component.
no setter
Methods
-
isScheme(
String scheme) → bool -
Whether the scheme of this Uri is
scheme
. -
normalizePath(
) → Uri - Returns a URI where the path has been normalized.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
removeFragment(
) → Uri -
Creates a
Uri
that differs from this only in not having a fragment. -
replace(
{String? scheme, String? userInfo, String? host, int? port, String? path, Iterable< String> ? pathSegments, String? query, Map<String, dynamic> ? queryParameters, String? fragment}) → Uri -
Creates a new
Uri
based on this one, but with some parts replaced. -
resolve(
String reference) → Uri -
Resolve
reference
as an URI relative tothis
. -
resolveUri(
Uri reference) → Uri -
Resolve
reference
as a URI relative tothis
. -
toFilePath(
{bool? windows}) → String - Creates a file path from a file URI.
-
toString(
) → String -
The normalized string representation of the URI.
override
Operators
-
operator ==(
Object other) → bool -
A URI is equal to another URI with the same normalized representation.
override
Static Properties
Static Methods
-
decodeComponent(
String encodedComponent) → String -
Decodes the percent-encoding in
encodedComponent
. -
decodeFull(
String uri) → String -
Decodes the percent-encoding in
uri
. -
decodeQueryComponent(
String encodedComponent, {Encoding encoding = utf8}) → String -
Decodes the percent-encoding in
encodedComponent
, converting pluses to spaces. -
encodeComponent(
String component) → String -
Encode the string
component
using percent-encoding to make it safe for literal use as a URI component. -
encodeFull(
String uri) → String -
Encodes the string
uri
using percent-encoding to make it safe for literal use as a full URI. -
encodeQueryComponent(
String component, {Encoding encoding = utf8}) → String -
Encodes the string
component
according to the HTML 4.01 rules for encoding the posting of a HTML form as a query string component. -
parse(
String uri, [int start = 0, int? end]) → Uri -
Creates a new
Uri
object by parsing a URI string. -
parseIPv4Address(
String host) → List< int> -
Parses the
host
as an IP version 4 (IPv4) address, returning the address as a list of 4 bytes in network byte order (big endian). -
parseIPv6Address(
String host, [int start = 0, int? end]) → List< int> -
Parses the
host
as an IP version 6 (IPv6) address. -
splitQueryString(
String query, {Encoding encoding = utf8}) → Map< String, String> -
Splits the
query
into a map according to the rules specified for FORM post in the HTML 4.01 specification section 17.13.4. -
tryParse(
String uri, [int start = 0, int? end]) → Uri? -
Creates a new
Uri
object by parsing a URI string.