ethChecksum function
Implementation
String ethChecksum(String address) {
final addr = address.toLowerCase().substring(2);
final hashed = HEX.encode(keccak256(utf8.encode(addr) as Uint8List));
String addrChecksum = "";
for (var char in addr.split('')) {
if ("0123456789".contains(char)) {
addrChecksum += char;
} else if ("abcdef".contains(char)) {
// Check if the corresponding hex digit (nibble) in the hash is 8 or higher
final hashedNibble = int.parse(hashed[addrChecksum.length], radix: 16);
if (hashedNibble >= 8) {
addrChecksum += char.toUpperCase();
} else {
addrChecksum += char;
}
} else {
throw ArgumentError("Unrecognized hex character");
}
}
return "0x$addrChecksum";
}