base64Decode function
Implementation
Uint8List base64Decode(String input) {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
final lookup = <int, int>{};
for (var i = 0; i < chars.length; i++) {
lookup[chars.codeUnitAt(i)] = i;
}
final src = input.replaceAll(RegExp(r'[^A-Za-z0-9+/=]'), '');
final len = src.length;
final outputLen = (len * 3 ~/ 4) - (src.endsWith('==') ? 2 : src.endsWith('=') ? 1 : 0);
final out = Uint8List(outputLen);
var j = 0;
for (var i = 0; i < len; i += 4) {
final n0 = lookup[src.codeUnitAt(i)] ?? 0;
final n1 = lookup[src.codeUnitAt(i + 1)] ?? 0;
final n2 = i + 2 < len ? (lookup[src.codeUnitAt(i + 2)] ?? 0) : 0;
final n3 = i + 3 < len ? (lookup[src.codeUnitAt(i + 3)] ?? 0) : 0;
if (j < outputLen) out[j++] = (n0 << 2) | (n1 >> 4);
if (j < outputLen) out[j++] = ((n1 & 0xF) << 4) | (n2 >> 2);
if (j < outputLen) out[j++] = ((n2 & 0x3) << 6) | n3;
}
return out;
}