decode static method
Decodes a Base64 data string into bytes.
validatePadding: If true (default), requires input length to be a multiple of 4.
If false, padding '=' is added automatically to fix length.
urlSafe: If true (default), treats input as URL-safe Base64, converting
'-' to '+' and '_' to '/' before decoding. If false, throws if URL-safe
characters are present.
Throws B64ConverterException on invalid input or length.
Implementation
static List<int> decode(
String data, {
bool validatePadding = true,
bool urlSafe = true,
}) {
if (validatePadding && data.length % 4 != 0) {
throw B64ConverterException();
} else if (!validatePadding) {
while (data.length % 4 != 0) {
data += '=';
}
}
if (urlSafe) {
data = data.replaceAll('-', '+').replaceAll('_', '/');
} else if (data.contains('-') || data.contains('_')) {
throw B64ConverterException();
}
final encoder = _Base64StreamDecoder();
try {
encoder.add(data);
return encoder.finalize().clone();
} finally {
encoder.clean();
}
}