22 lines
862 B
Dart
22 lines
862 B
Dart
import 'package:aves/ref/unicode.dart';
|
|
|
|
class EmojiUtils {
|
|
static const _countryCodeToFlagDiff = UniCodes.regionalIndicatorSymbolLetterA - UniCodes.latinCapitalLetterA;
|
|
static const _stateCodeToFlagDiff = UniCodes.tagLatinSmallLetterA - UniCodes.latinCapitalLetterA;
|
|
static const _subFlagStart = UniCodes.wavingBlackFlag;
|
|
static const _subFlagEnd = UniCodes.cancelTag;
|
|
|
|
static String? countryCodeToFlag(String? code) {
|
|
if (code == null || code.length != 2) return null;
|
|
return String.fromCharCodes(code.toUpperCase().codeUnits.map((letter) => letter += _countryCodeToFlagDiff));
|
|
}
|
|
|
|
static String? stateCodeToFlag(String? code) {
|
|
if (code == null) return null;
|
|
return String.fromCharCodes([
|
|
_subFlagStart,
|
|
...code.toUpperCase().codeUnits.map((letter) => letter += _stateCodeToFlagDiff),
|
|
_subFlagEnd,
|
|
]);
|
|
}
|
|
}
|