如何在flutter中替换国家代码来标记emoji

ddrv8njm  于 2022-12-30  发布在  Flutter
关注(0)|答案(4)|浏览(170)

我有一个国家的列表,其sortname/countrycode为json格式,这将在flutter中调用。有没有办法我可以转换所有这些代码与他们的国旗表情符号?
For example: "sortname": "PL" will gives 🇵🇱 (idk if you guys can see the flag or not)

{
	"sortname": "PL",
	"name": "Poland",
}, {
	"sortname": "PT",
	"name": "Portugal",
}, {
	"sortname": "PR",
	"name": "Puerto Rico",
}, {
	"sortname": "QA",
	"name": "Qatar",
}, {
	"sortname": "RE",
	"name": "Reunion",
}, {
	"sortname": "RO",
	"name": "Romania",
}, {
	"sortname": "RU",
	"name": "Russia",
},
camsedfj

camsedfj1#

我是这么做的:

String countryCode = 'us';
String flag = countryCode.toUpperCase().replaceAllMapped(RegExp(r'[A-Z]'),
     (match) => String.fromCharCode(match.group(0).codeUnitAt(0) + 127397));
print(flag);
  • .toUpperCase()将所有字符大写
  • 美国→美国
  • RegExp(r'[A-Z]')使用regex选择每个字符
  • .replaceAllMapped()获取每个匹配字符
  • 美国
  • S型
  • .codeUnitAt(0)将每个字符转换为符文
  • 85
  • 83
  • + 127397将每个符文转换为regional indicator symbol

127397 = 127462 (🇦's HTML code) - 65 (A's rune value).

  • 85 + 127397 = 127482
  • 八三加一二七三九七=一二七四八○
  • .fromCharCode()将区域指示符符号的值转换为字符串(标志表情符号)
  • 🇺 🇸 → 🇺🇸
vcirk6k6

vcirk6k62#

你可以试试flutter_emoji包

b4wnujal

b4wnujal3#

2022年的工作方式。国旗图标可以通过这些软件包使用:
国家图标package

import 'package:country_icons/country_icons.dart';
Image.asset('icons/flags/svg/xx.svg', package: 'country_icons');

标志package

import 'package:flag/flag.dart'; 
Flag.fromCode(FlagsCode.AD, height: 100, width: null)
Flag.fromString('AD', height: null, width: null)
Flag.fromString('AD', height: 10, width: 100, fit: BoxFit.fill)

您可以在这里检查国家代码和国家名称

nbysray5

nbysray54#

如果这个有用,
你可以把特定国家的Unicode码存储在sortname键中,然后循环遍历,把Unicode码解码成一个表情符号字符串。
您可以找到unicode here

相关问题