URI

Uri 类 提供编码和解码字符串用来作为 URI(就是你可能知道的 URL)的函数。这些函数处理 URI 中的特殊字符,比如 &=。Uri 类也包含解析和获取 URI 的各个部件的方法——host、port、schema 等等。

编码和解码完全限定的 URI

要编码和解码 URI 中除去那些有特殊意义(比如 /:&#)之外的字符,使用 encodeFull()decodeFull() 方法。这些方法对于编码和解码完全限定的 URI 是非常好的,它们会留下 URI 中完整的特殊字符。

var uri = 'example.com message'; var encoded = Uri.encodeFull(uri); assert(encoded == 'example.com var decoded = Uri.decodeFull(encoded); assert(uri == decoded);

注意只有 somemessage 之间的空格被编码了。

编码和解码 URI 部件

要编码和解码一个字符串在 URI 中有特殊意义的所有字符,包括(但不限于)/&:,使用 encodeComponent()decodeComponent 方法。

var uri = 'example.com message'; var encoded = Uri.encodeComponent(uri); assert(encoded == 'http%3A%2F%2Fexample.org%2Fapi%3Ffoo%3Dsome%20message'); var decoded = Uri.decodeComponent(encoded); assert(uri == decoded);

解析 URI

如果你有一个 Uri 对象或者一个 URI 字符串,你可以使用 Uri 的属性获取它的部件比如 path。要从一个字符串创建一个 Uri,使用静态方法 parse()

var uri = Uri.parse('example.com assert(uri.scheme == 'http'); assert(uri.host == 'example.org'); assert(uri.path == '/foo/bar'); assert(uri.fragment == 'frag'); assert(uri.origin == 'example.com

参见 Uri API 索引 了解所有你可以获取的部件。

构建 URI

你可以使用 Uri() 构造函数从独立的部件构建 URL:

var uri = Uri( scheme: 'http', host: 'example.org', path: '/foo/bar', fragment: 'frag'); assert( uri.toString() == 'example.com