Uri class abstract interface

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:

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 of bytes.
factory
Uri.dataFromString(String content, {String? mimeType, Encoding? encoding, Map<String, String>? parameters, bool base64 = false})
Creates a data: URI containing the content 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

authority String
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 to this.
resolveUri(Uri reference) Uri
Resolve reference as a URI relative to this.
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

base Uri
The natural base URI for the current platform.
no setter

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.