UPDATE: Just found https://pub.dev/packages/diacritic, which appears as though it might do roughly what you want, although I'm not sure of how many different characters it supports.
Well, a good place to start might be looking at the internal implementation of the ES6 String.prototype.normalize() function.
Interestingly, it only works in Compatibility Decomposition mode - ie. NFKC or NFKD.
for (const weirdString of [
'๐ฆ๐ ๐ฆ๐๐ฉ๐',
'๐๐ช๐ด๐ท๐ฌ๐ป๐ช',
'๐บ๐น๐ฒ๐๐น๐ฎ๐ฟ๐ฎ',
'๐๐จ๐ก๐๐๐๐๐ฎ',
'๐ง๐๐๐พ',
'๐ฎ๐๐๐๐๐',
'๐ฟ๐ข๐๐',
'๐๐ก๐ข๐',
'๐ โ๐๐ฅ๐ง๐๐ ๐๐ ',
]) {console.log(weirdString.normalize('NFKC'))}
Anyway, maybe there is a translation in Dart, or you can use the 'dart:js' library if you're running on the web, or you could find the implementation in the V8 engine (although it'll probably be in C).