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.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 ofbytes.factory - 
          Uri.dataFromString(String content, {String? mimeType, Encoding? encoding, Map<
String, String> ? parameters, bool base64 = false}) - 
          Creates a 
data:URI containing thecontentstring.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 
httpURI from authority, path and query.factory - 
          Uri.https(String authority, [String unencodedPath, Map<
String, dynamic> ? queryParameters]) - 
          Creates a new 
httpsURI 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 
Urithat 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 
Uribased on this one, but with some parts replaced. - 
  resolve(
String reference) → Uri  - 
  Resolve 
referenceas an URI relative tothis. - 
  resolveUri(
Uri reference) → Uri  - 
  Resolve 
referenceas 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 
componentusing percent-encoding to make it safe for literal use as a URI component. - 
  encodeFull(
String uri) → String  - 
  Encodes the string 
uriusing percent-encoding to make it safe for literal use as a full URI. - 
  encodeQueryComponent(
String component, {Encoding encoding = utf8}) → String  - 
  Encodes the string 
componentaccording 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 
Uriobject by parsing a URI string. - 
  parseIPv4Address(
String host) → List< int>  - 
  Parses the 
hostas 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 
hostas an IP version 6 (IPv6) address. - 
  splitQueryString(
String query, {Encoding encoding = utf8}) → Map< String, String>  - 
  Splits the 
queryinto 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 
Uriobject by parsing a URI string.