更新样式

This commit is contained in:
wyf
2025-12-01 15:41:34 +08:00
parent 991bf97fd1
commit 1cc26aa46d
18 changed files with 502 additions and 677 deletions

View File

@@ -221,6 +221,39 @@ class CityModelController extends GetControllerEx<CityModel> {
// 检查是否已加载数据
bool get isDataLoaded => cityList.isNotEmpty;
// void searchCities(String keyword) {
// model.keyword = keyword;
// searchResults?.clear();
// if (keyword.isEmpty) {
// return;
// }
// final keywordLower = keyword.toLowerCase();
// // 遍历所有城市数据
// for (var country in cityList) {
// final countryName = country.value ?? country.country ?? '';
// for (var province in country.children ?? []) {
// final provinceName = province.value ?? province.province ?? '';
// for (var city in province.children ?? []) {
// final cityName = city.value ?? city.city ?? '';
// final displayName = '$countryName-$provinceName-$cityName';
// // 模糊匹配
// if (countryName.toLowerCase().contains(keywordLower) ||
// provinceName.toLowerCase().contains(keywordLower) ||
// cityName.toLowerCase().contains(keywordLower) ||
// displayName.toLowerCase().contains(keywordLower)) {
// searchResults?.add(displayName);
// }
// }
// }
// }
// }
void searchCities(String keyword) {
model.keyword = keyword;
searchResults?.clear();
@@ -231,23 +264,43 @@ class CityModelController extends GetControllerEx<CityModel> {
final keywordLower = keyword.toLowerCase();
// 遍历所有城市数据
for (var country in cityList) {
final countryName = country.value ?? country.country ?? '';
for (var province in country.children ?? []) {
// 如果该国家没有 children一级结构
if (country.children == null || country.children!.isEmpty) {
final name = countryName;
if (name.toLowerCase().contains(keywordLower)) {
searchResults?.add(name);
}
continue;
}
// 二层循环:省份或城市
for (var province in country.children!) {
final provinceName = province.value ?? province.province ?? '';
final level2Name = '$countryName-$provinceName';
for (var city in province.children ?? []) {
// 省本身是否匹配(适用于 国家→省 二级结构)
if (province.children == null || province.children!.isEmpty) {
if (countryName.toLowerCase().contains(keywordLower) ||
provinceName.toLowerCase().contains(keywordLower) ||
level2Name.toLowerCase().contains(keywordLower)) {
searchResults?.add(level2Name);
}
continue;
}
// 有第三级城市 → 遍历城市
for (var city in province.children!) {
final cityName = city.value ?? city.city ?? '';
final displayName = '$countryName-$provinceName-$cityName';
final level3Name = '$countryName-$provinceName-$cityName';
// 模糊匹配
if (countryName.toLowerCase().contains(keywordLower) ||
provinceName.toLowerCase().contains(keywordLower) ||
cityName.toLowerCase().contains(keywordLower) ||
displayName.toLowerCase().contains(keywordLower)) {
searchResults?.add(displayName);
level3Name.toLowerCase().contains(keywordLower)) {
searchResults?.add(level3Name);
}
}
}
@@ -255,27 +308,77 @@ class CityModelController extends GetControllerEx<CityModel> {
}
// 根据显示名称获取对应的 CityModel
// CityModel? getCityByDisplayName(String displayName) {
// final parts = displayName.split('-');
// if (parts.length != 3) return null;
// final countryName = parts[0];
// final provinceName = parts[1];
// final cityName = parts[2];
// for (var country in cityList) {
// if ((country.value ?? country.country ?? '') == countryName) {
// for (var province in country.children ?? []) {
// if ((province.value ?? province.province ?? '') == provinceName) {
// for (var city in province.children ?? []) {
// if ((city.value ?? city.city ?? '') == cityName) {
// return city;
// }
// }
// }
// }
// }
// }
// return null;
// }
CityModel? getCityByDisplayName(String displayName) {
final parts = displayName.split('-');
if (parts.length != 3) return null;
if (parts.isEmpty) return null;
final countryName = parts[0];
final provinceName = parts[1];
final cityName = parts[2];
final provinceName = parts.length >= 2 ? parts[1] : null;
final cityName = parts.length >= 3 ? parts[2] : null;
for (var country in cityList) {
if ((country.value ?? country.country ?? '') == countryName) {
for (var province in country.children ?? []) {
if ((province.value ?? province.province ?? '') == provinceName) {
for (var city in province.children ?? []) {
if ((city.value ?? city.city ?? '') == cityName) {
return city;
}
}
final cName = country.value ?? country.country ?? '';
if (cName != countryName) continue;
// 一级结构:直接 return 国家
if (provinceName == null) {
return country;
}
// 如果没有 children就不可能有省或市
if (country.children == null || country.children!.isEmpty) {
return null;
}
// 二级匹配:省或城市
for (var province in country.children!) {
final pName = province.value ?? province.province ?? '';
if (pName != provinceName) continue;
// 二级结构:国家-省
if (cityName == null) {
return province;
}
// 有城市才继续
if (province.children == null || province.children!.isEmpty) {
return null;
}
// 三级结构:国家-省-市
for (var city in province.children!) {
final ciName = city.value ?? city.city ?? '';
if (ciName == cityName) {
return city;
}
}
}
}
return null;
}
}