Uri class - dart:core library (original) (raw)

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.dev/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.dev/guides/libraries/library-tour#utility-classes');
print(uri); // https://dart.dev
print(uri.isScheme('https')); // true
print(uri.origin); // https://dart.dev
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.new({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 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

authorityString

The authority component.

no setter

dataUriData?

Access the structure of a data: URI.

no setter

fragmentString

The fragment identifier component.

no setter

hasAbsolutePathbool

Whether the URI has an absolute path (starting with '/').

no setter

hasAuthoritybool

Whether the URI has an authority component.

no setter

hasEmptyPathbool

Whether the URI has an empty path.

no setter

hasFragmentbool

Whether the URI has a fragment part.

no setter

hashCodeint

Returns a hash code computed as toString().hashCode.

no setteroverride

hasPortbool

Whether the URI has an explicit port.

no setter

hasQuerybool

Whether the URI has a query part.

no setter

hasSchemebool

Whether the URI has a scheme component.

no setter

hostString

The host part of the authority component.

no setter

isAbsolutebool

Whether the URI is absolute.

no setter

originString

Returns the origin of the URI in the form scheme://host:port for the schemes http and https.

no setter

pathString

The path component.

no setter

pathSegmentsList<String>

The URI path split into its segments.

no setter

portint

The port part of the authority component.

no setter

queryString

The query component.

no setter

queryParametersMap<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

queryParametersAllMap<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

runtimeTypeType

A representation of the runtime type of the object.

no setterinherited

schemeString

The scheme component of the URI.

no setter

userInfoString

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

baseUri

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.