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
相关产品推荐
相关产品推荐

