description

# 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: 'language/built-in-types',
        fragment: 'numbers');
    print(httpsUri); // https://dart.dev/language/built-in-types#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/libraries/dart-core#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); // libraries/dart-core
    print(uri.pathSegments); // [libraries, dart-core]
    print(uri.fragment); // utility-classes
    print(uri.hasQuery); // false
    print(uri.data); // null

See also:

- URIs in the introduction to `dart:core`
- 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 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 setter override
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 setter inherited
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, [int start = 0, int? end]) → 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.