You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中通过国家名称获取国旗的实现方案咨询

解决方案

一、本地映射或专用包转换国家名称到Alpha-2缩写

1. 自定义映射表

直接在项目中维护一个国家名称到ISO 3166-1 alpha-2缩写(即us、br这类格式)的映射Map,简单高效:

final Map<String, String> countryNameToAlpha2 = {
  "United States": "us",
  "Brazil": "br",
  "China": "cn",
  // 按需补充需要的国家条目
};
// 使用示例
String? alpha2Code = countryNameToAlpha2["United States"];

2. 使用country_codes包

这个包内置了国家名称与各类代码的映射,直接通过名称获取alpha-2代码:

import 'package:country_codes/country_codes.dart';

String? getAlpha2FromName(String countryName) {
  return CountryCodes.countryCodeByName(countryName)?.toLowerCase();
}

二、利用intl包的本地化数据转换

借助intl包的Locale类,通过国家名称反向匹配对应的alpha-2代码:

import 'package:intl/intl.dart';

String? getAlpha2Code(String countryName) {
  for (var locale in Locale.supportedLocales) {
    if (Intl.countryName(locale.countryCode) == countryName) {
      return locale.countryCode?.toLowerCase();
    }
  }
  return null;
}

注:该方式依赖intl包的本地化数据,需确保目标国家在支持列表内。

三、直接用支持国旗显示的包

如果不想做代码转换,可直接使用支持多参数显示国旗的包:
比如flutter_country_flags,支持通过alpha-2代码或电话区号直接渲染国旗,兼容country_code_picker返回的电话代码:

import 'package:flutter_country_flags/flutter_country_flags.dart';

// 从country_code_picker拿到的CountryCode对象,比如code为"+1"
FlutterCountryFlag(
  countryCode: 'US', // 或通过电话代码转换后传入
  height: 24,
  width: 32,
);

内容的提问来源于stack exchange,提问作者geovane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 22:15:02