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

Flutter如何实现国家所有城市下拉选择,有可获取巴基斯坦城市数据的包或API吗?

Flutter实现巴基斯坦城市下拉框的可用方案

离线包方案(优先推荐)

直接使用countries_states_citiesDart包,包内内置了全球所有国家的三级行政区划数据(国家-省/州-城市),完整覆盖巴基斯坦全部城市,完全离线可用,不需要依赖外部接口,性能更好也不会出现网络请求失败问题。
简单使用示例如下:

// 引入依赖后导入包
import 'package:countries_states_cities/countries_states_cities.dart';

// 获取巴基斯坦所有城市的核心逻辑
Future<List<String>> getPakistanCities() async {
  List<String> cityList = [];
  // 获取所有国家列表,筛选出巴基斯坦(国家ISO2代码为PK)
  final allCountries = await CountriesStatesCities.instance.getAllCountries();
  final pakistan = allCountries.firstWhere((c) => c.iso2 == 'PK');
  // 获取巴基斯坦所有省份
  final pakistanProvinces = await CountriesStatesCities.instance.getStatesOfCountry(pakistan.id);
  // 遍历省份取下属所有城市
  for (var province in pakistanProvinces) {
    final provinceCities = await CountriesStatesCities.instance.getCitiesOfState(province.id);
    cityList.addAll(provinceCities.map((city) => city.name));
  }
  return cityList;
}

拿到城市列表后直接传给Flutter原生的DropdownButton组件即可实现下拉选择功能,也可以基于该包的结构实现省-市二级联动下拉框。

离线JSON方案

如果不想引入第三方包,可以直接将公开的巴基斯坦城市JSON数据放在项目assets目录下,应用启动后加载本地JSON解析即可,同样是离线可用,适合不需要频繁更新城市数据的场景。

在线API方案

如果需要动态更新的最新城市数据,可以调用公开的地理数据接口,筛选国家代码为PK的返回结果即可,解析后就能作为下拉框的数据源。

注意事项

  • 如果需要同时展示乌尔都语、英语两种城市名称,要提前确认你使用的数据包/接口是否支持多语言字段
  • 离线方案的城市数据如果有更新需求,定期升级依赖包或者替换本地JSON文件即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:06:03