搜索插件、代码仓与 APP 分类

插件详情v1.0.0

uri

用于构建和解析 URI 的工具,包括支持按照 RFC 6570 定义的 URI 模板解析。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
48.4万
喜欢数
26
Pub 分数
145

安装插件

flutter pub add uri

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

uri 包为 Dart 应用程序中的 URI 构造、解析和操作提供实用工具。它支持符合 RFC 6570 规范的 URI 模板解析,可实现带变量的动态 URL 生成。该包专为所有主要平台设计,可无缝集成到 HTTP 客户端和 Web 服务集成中。该包由 Google 维护,为 Flutter 和 Dart 项目中的复杂 URI 操作提供轻量且可靠的解决方案。

适合场景

  • 构建动态 API URL
  • 从 URI 解析查询参数
  • 扩展带有变量的 URI 模板
  • 处理相对和绝对 URI
  • 与 HTTP 客户端集成
  • 验证 URI 结构

主要特点

  • RFC 6570 URI 模板支持
  • 强大的解析和构建
  • 跨平台兼容性
  • 轻便高效
  • 支持查询字符串操作
  • 可扩展以支持自定义 URI 逻辑

适合对象

  • API 客户端
  • Web服务集成
  • URL路由系统
  • 数据获取管道
  • 后端通信层
  • 测试 HTTP 交互

使用建议

  • 需要手动处理特殊字符的编码
  • 不适用于超出语法的完整URL验证
  • 仅限URI级别操作,不支持完整的HTTP请求
  • 无内置缓存或重试机制
  • 取决于模板语法的正确使用
  • 可能需要与 http 包配对以完成完整的 HTTP 工作流

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

ci

Utilities for working with URIs in Dart, mostly parsing and generating URIs.

UriPattern

UriPattern is an interface for classes that match and parse URIs, much like the Pattern is for Strings. It defines the methods bool matches(Uri uri) and UriMatch match(Uri uri).

UriMatch

UriMatch is the result of UriPattern.match(). It contains the parameters parsed out of a URI and the "rest" of the URI left over after parsing, which is useful for parsing a single URI with multiple relative URI patterns that form a hierarchy.

UriTemplate

UriTemplate is an implementation of RFC 6570 URI Templates. URI Templates are useful for generating URIs from data. UriTemplates are created from a template string, and then expanded with data to generate a URI:

var template = UriTemplate("http://example.com/~{user}/");
String fredUri = template.expand({'user': 'fred'});
print(fredUri); // prints: http://example.com/~fred/
Syntax

URI templates are strings made up of fixed and variable parts. The variable parts are described with expressions, which are places within single curly-braces: { and }.

Expressions consist of an optional operator and a comma-separated list of variable specifications_. Variable specifications consist of a variable name and an optional modifier. The operator applies to the whole expression and controls how reserved characters are expanded, the prefix and separator, if any, applied to the expansion, and whether to expand the variable as a key/value pair. Modifiers apply to each variable in the expression and allow truncating the value, or "exploding" list and maps into multiple key/value pairs.

Examples
  • http://example.com/~{username}/
  • http://example.com/dictionary/{term:1}/{term}
  • http://example.com/search{?q,lang}
Operators

URI template expansions does more than simple variable replacement, it has facilities for generating paths, fragments, query strings and more. To control the expansion, expressions can use one of the supported operators:

Operator Description
none Simple string expansion
+ Reserved string expansion
# Fragment expansion
. Label expansion, dot-prefixed
/ Path segments, slash-prefixed
; Path-style parameters, semicolon-prefixed
? Form-style query, ampersand-separated
& Form-style query continuation
Modifiers

Modifiers control

Modifier Description
none Default expansion
:n Prefix: use only the first n characters of the value
* "Explode" the lists and maps into key/value pairs

UriParser

UriParser parses URIs according to a UriTemplate, extracting parameters based on the variables defined in the template.

Since URI Templates are not designed to be parsable, only a restricted subset of templates can be used for parsing.

Parsable templates have the following restrictions over expandable templates:

  • URI components must come in order: scheme, host, path, query, fragment. There can only be one of each component.
  • Path expressions can only contain one variable.
  • Multiple expressions must be separated by a literal.
  • Only the following operators are supported: none, +, #, ?, &
  • Default and + operators are not allowed in query or fragment components.
  • Queries can only use the ? or & operator.
  • The ? operator can only be used once.
  • Fragments can only use the # operator

UriBuilder

UriBuilder is mutable container of URI components for incrementally building Uris.

所属分类

依赖

依赖清单 2 项

源码仓库

使用此插件的项目