Uri.dataFromString constructor Null safety
Creates a data: URI containing the content string.
Converts the content to bytes using encoding or the charset specified
in parameters (defaulting to US-ASCII if not specified or unrecognized),
then encodes the bytes into the resulting data URI.
Defaults to encoding using percent-encoding (any non-ASCII or
non-URI-valid bytes is replaced by a percent encoding). If base64 is
true, the bytes are instead encoded using base64.
If encoding is not provided and parameters has a charset entry,
that name is looked up using Encoding.getByName,
and if the lookup returns an encoding, that encoding is used to convert
content to bytes.
If providing both an encoding and a charset in parameters, they should
agree, otherwise decoding won't be able to use the charset parameter
to determine the encoding.
If mimeType and/or parameters are supplied, they are added to the
created URI. If any of these contain characters that are not allowed
in the data URI, the character is percent-escaped. If the character is
non-ASCII, it is first UTF-8 encoded and then the bytes are percent
encoded. An omitted mimeType in a data URI means text/plain, just
as an omitted charset parameter defaults to meaning US-ASCII.
To read the content back, use UriData.contentAsString.
Example:
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
Implementation
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;
}