Uri.dataFromString 构造函数

Uri.dataFromString(
  1. String content,
  2. {String? mimeType,
  3. Encoding? encoding,
  4. Map<String, String>? parameters,
  5. bool base64 = false}
)

创建一个包含 content 字符串的 data: URI。

使用 encodingparameters 中指定的字符集(如果没有指定或不可识别则默认为 US-ASCII)将内容转换为字节,然后将字节编码到结果数据 URI 中。

默认使用百分号编码(任何非 ASCII 或非 URI 有效的字节都将替换为百分号编码)。如果 base64 为 true,则使用 base64 进行编码。

如果 encoding 未提供且 parameterscharset 条目,则使用 Encoding.getByName 查找该名称,如果查找返回编码,则使用该编码将 content 转换为字节。如果同时提供 encodingparameters 中的字符集,它们应一致,否则解编码将无法使用字符集参数来确定编码。

如果提供 mimeType 和/或 parameters,它们将被添加到创建的 URI 中。如果其中任何包含数据 URI 中不允许的字符,该字符将被百分号转义。如果字符非 ASCII,则首先将其 UTF-8 编码,然后再对字节进行百分号编码。数据 URI 中的省略 mimeType 意味着 text/plain,就像省略的 charset 参数默认为 US-ASCII 一样。

要读取内容,请使用 UriData.contentAsString

示例

final uri = Uri.dataFromString(
  'example content',
  mimeType: 'text/plain',
  parameters: <String, String>{'search': 'file', 'max': '10'},
);
print(uri); // data:;search=name;max=10,example%20content

实现

factory Uri.dataFromString(String content,
    {String? mimeType,
    Encoding? encoding,
    Map<String, String>? parameters,
    bool base64 = false}) {
  UriData data = UriData.fromString(content,
      mimeType: mimeType,
      encoding: encoding,
      parameters: parameters,
      base64: base64);
  return data.uri;
}