Initial commit of Doormile CRM Mobile with UI modernizations
This commit is contained in:
166
lib/data/india_cities.dart
Normal file
166
lib/data/india_cities.dart
Normal file
@@ -0,0 +1,166 @@
|
||||
/// A selectable Indian city shown flight-booking style: "Chennai (MAA)".
|
||||
class IndiaCity {
|
||||
final String name;
|
||||
final String code; // airport-style 3-letter code
|
||||
final String state;
|
||||
|
||||
const IndiaCity(this.name, this.code, this.state);
|
||||
|
||||
String get label => '$name ($code)';
|
||||
|
||||
/// True if [query] matches the city name, code, or state.
|
||||
bool matches(String query) {
|
||||
final q = query.trim().toLowerCase();
|
||||
if (q.isEmpty) return true;
|
||||
return name.toLowerCase().contains(q) ||
|
||||
code.toLowerCase().contains(q) ||
|
||||
state.toLowerCase().contains(q);
|
||||
}
|
||||
}
|
||||
|
||||
/// Major Indian cities with flight-style codes. Tamil Nadu listed first
|
||||
/// (primary operating region), then the rest of India.
|
||||
const List<IndiaCity> indiaCities = [
|
||||
// ── Tamil Nadu ──────────────────────────────────────────────────────────
|
||||
IndiaCity('Chennai', 'MAA', 'Tamil Nadu'),
|
||||
IndiaCity('Coimbatore', 'CJB', 'Tamil Nadu'),
|
||||
IndiaCity('Madurai', 'IXM', 'Tamil Nadu'),
|
||||
IndiaCity('Tiruchirappalli', 'TRZ', 'Tamil Nadu'),
|
||||
IndiaCity('Salem', 'SXV', 'Tamil Nadu'),
|
||||
IndiaCity('Tuticorin', 'TCR', 'Tamil Nadu'),
|
||||
IndiaCity('Tirupur', 'TUP', 'Tamil Nadu'),
|
||||
IndiaCity('Erode', 'ERD', 'Tamil Nadu'),
|
||||
IndiaCity('Vellore', 'VLR', 'Tamil Nadu'),
|
||||
IndiaCity('Tirunelveli', 'TEN', 'Tamil Nadu'),
|
||||
IndiaCity('Thanjavur', 'TNJ', 'Tamil Nadu'),
|
||||
IndiaCity('Dindigul', 'DGL', 'Tamil Nadu'),
|
||||
IndiaCity('Hosur', 'HSR', 'Tamil Nadu'),
|
||||
IndiaCity('Nagercoil', 'NGL', 'Tamil Nadu'),
|
||||
IndiaCity('Karur', 'KRR', 'Tamil Nadu'),
|
||||
IndiaCity('Namakkal', 'NMK', 'Tamil Nadu'),
|
||||
IndiaCity('Kanchipuram', 'KCP', 'Tamil Nadu'),
|
||||
IndiaCity('Cuddalore', 'CDL', 'Tamil Nadu'),
|
||||
IndiaCity('Thoothukudi', 'TOO', 'Tamil Nadu'),
|
||||
|
||||
// ── Karnataka ───────────────────────────────────────────────────────────
|
||||
IndiaCity('Bengaluru', 'BLR', 'Karnataka'),
|
||||
IndiaCity('Mysuru', 'MYQ', 'Karnataka'),
|
||||
IndiaCity('Mangaluru', 'IXE', 'Karnataka'),
|
||||
IndiaCity('Hubli', 'HBX', 'Karnataka'),
|
||||
IndiaCity('Belagavi', 'IXG', 'Karnataka'),
|
||||
IndiaCity('Kalaburagi', 'GBI', 'Karnataka'),
|
||||
IndiaCity('Davangere', 'DVG', 'Karnataka'),
|
||||
IndiaCity('Ballari', 'BEP', 'Karnataka'),
|
||||
|
||||
// ── Kerala ──────────────────────────────────────────────────────────────
|
||||
IndiaCity('Kochi', 'COK', 'Kerala'),
|
||||
IndiaCity('Thiruvananthapuram', 'TRV', 'Kerala'),
|
||||
IndiaCity('Kozhikode', 'CCJ', 'Kerala'),
|
||||
IndiaCity('Kannur', 'CNN', 'Kerala'),
|
||||
IndiaCity('Thrissur', 'TCR2', 'Kerala'),
|
||||
IndiaCity('Kollam', 'QLN', 'Kerala'),
|
||||
|
||||
// ── Telangana & Andhra Pradesh ──────────────────────────────────────────
|
||||
IndiaCity('Hyderabad', 'HYD', 'Telangana'),
|
||||
IndiaCity('Warangal', 'WGC', 'Telangana'),
|
||||
IndiaCity('Visakhapatnam', 'VTZ', 'Andhra Pradesh'),
|
||||
IndiaCity('Vijayawada', 'VGA', 'Andhra Pradesh'),
|
||||
IndiaCity('Tirupati', 'TIR', 'Andhra Pradesh'),
|
||||
IndiaCity('Guntur', 'GNT', 'Andhra Pradesh'),
|
||||
IndiaCity('Rajahmundry', 'RJA', 'Andhra Pradesh'),
|
||||
IndiaCity('Nellore', 'NLR', 'Andhra Pradesh'),
|
||||
|
||||
// ── Maharashtra ─────────────────────────────────────────────────────────
|
||||
IndiaCity('Mumbai', 'BOM', 'Maharashtra'),
|
||||
IndiaCity('Pune', 'PNQ', 'Maharashtra'),
|
||||
IndiaCity('Nagpur', 'NAG', 'Maharashtra'),
|
||||
IndiaCity('Nashik', 'ISK', 'Maharashtra'),
|
||||
IndiaCity('Aurangabad', 'IXU', 'Maharashtra'),
|
||||
IndiaCity('Kolhapur', 'KLH', 'Maharashtra'),
|
||||
IndiaCity('Solapur', 'SSE', 'Maharashtra'),
|
||||
|
||||
// ── Delhi NCR & North ───────────────────────────────────────────────────
|
||||
IndiaCity('New Delhi', 'DEL', 'Delhi'),
|
||||
IndiaCity('Gurugram', 'GGN', 'Haryana'),
|
||||
IndiaCity('Noida', 'NOI', 'Uttar Pradesh'),
|
||||
IndiaCity('Faridabad', 'FBD', 'Haryana'),
|
||||
IndiaCity('Chandigarh', 'IXC', 'Chandigarh'),
|
||||
IndiaCity('Amritsar', 'ATQ', 'Punjab'),
|
||||
IndiaCity('Ludhiana', 'LUH', 'Punjab'),
|
||||
IndiaCity('Jalandhar', 'JLR2', 'Punjab'),
|
||||
|
||||
// ── Gujarat ─────────────────────────────────────────────────────────────
|
||||
IndiaCity('Ahmedabad', 'AMD', 'Gujarat'),
|
||||
IndiaCity('Surat', 'STV', 'Gujarat'),
|
||||
IndiaCity('Vadodara', 'BDQ', 'Gujarat'),
|
||||
IndiaCity('Rajkot', 'RAJ', 'Gujarat'),
|
||||
IndiaCity('Bhavnagar', 'BHU', 'Gujarat'),
|
||||
IndiaCity('Jamnagar', 'JGA', 'Gujarat'),
|
||||
|
||||
// ── Rajasthan ───────────────────────────────────────────────────────────
|
||||
IndiaCity('Jaipur', 'JAI', 'Rajasthan'),
|
||||
IndiaCity('Jodhpur', 'JDH', 'Rajasthan'),
|
||||
IndiaCity('Udaipur', 'UDR', 'Rajasthan'),
|
||||
IndiaCity('Kota', 'KTU', 'Rajasthan'),
|
||||
IndiaCity('Bikaner', 'BKB', 'Rajasthan'),
|
||||
|
||||
// ── Uttar Pradesh & Central ─────────────────────────────────────────────
|
||||
IndiaCity('Lucknow', 'LKO', 'Uttar Pradesh'),
|
||||
IndiaCity('Kanpur', 'KNU', 'Uttar Pradesh'),
|
||||
IndiaCity('Varanasi', 'VNS', 'Uttar Pradesh'),
|
||||
IndiaCity('Agra', 'AGR', 'Uttar Pradesh'),
|
||||
IndiaCity('Prayagraj', 'IXD', 'Uttar Pradesh'),
|
||||
IndiaCity('Gorakhpur', 'GOP', 'Uttar Pradesh'),
|
||||
IndiaCity('Bhopal', 'BHO', 'Madhya Pradesh'),
|
||||
IndiaCity('Indore', 'IDR', 'Madhya Pradesh'),
|
||||
IndiaCity('Gwalior', 'GWL', 'Madhya Pradesh'),
|
||||
IndiaCity('Jabalpur', 'JLR', 'Madhya Pradesh'),
|
||||
IndiaCity('Raipur', 'RPR', 'Chhattisgarh'),
|
||||
|
||||
// ── East & North-East ───────────────────────────────────────────────────
|
||||
IndiaCity('Kolkata', 'CCU', 'West Bengal'),
|
||||
IndiaCity('Siliguri', 'IXB', 'West Bengal'),
|
||||
IndiaCity('Durgapur', 'RDP', 'West Bengal'),
|
||||
IndiaCity('Patna', 'PAT', 'Bihar'),
|
||||
IndiaCity('Gaya', 'GAY', 'Bihar'),
|
||||
IndiaCity('Ranchi', 'IXR', 'Jharkhand'),
|
||||
IndiaCity('Jamshedpur', 'JSD', 'Jharkhand'),
|
||||
IndiaCity('Bhubaneswar', 'BBI', 'Odisha'),
|
||||
IndiaCity('Cuttack', 'CTC', 'Odisha'),
|
||||
IndiaCity('Guwahati', 'GAU', 'Assam'),
|
||||
IndiaCity('Dibrugarh', 'DIB', 'Assam'),
|
||||
IndiaCity('Agartala', 'IXA', 'Tripura'),
|
||||
IndiaCity('Imphal', 'IMF', 'Manipur'),
|
||||
IndiaCity('Shillong', 'SHL', 'Meghalaya'),
|
||||
IndiaCity('Aizawl', 'AJL', 'Mizoram'),
|
||||
IndiaCity('Dimapur', 'DMU', 'Nagaland'),
|
||||
|
||||
// ── Hills, UTs & others ─────────────────────────────────────────────────
|
||||
IndiaCity('Dehradun', 'DED', 'Uttarakhand'),
|
||||
IndiaCity('Haridwar', 'HDW', 'Uttarakhand'),
|
||||
IndiaCity('Shimla', 'SLV', 'Himachal Pradesh'),
|
||||
IndiaCity('Srinagar', 'SXR', 'Jammu & Kashmir'),
|
||||
IndiaCity('Jammu', 'IXJ', 'Jammu & Kashmir'),
|
||||
IndiaCity('Leh', 'IXL', 'Ladakh'),
|
||||
IndiaCity('Panaji', 'GOI', 'Goa'),
|
||||
IndiaCity('Puducherry', 'PNY', 'Puducherry'),
|
||||
IndiaCity('Port Blair', 'IXZ', 'Andaman & Nicobar Islands'),
|
||||
];
|
||||
|
||||
/// Finds a city by (loose) name match — used to map a GPS reverse-geocode
|
||||
/// result to a known city. Returns null if nothing reasonable matches.
|
||||
IndiaCity? findCityByName(String? name) {
|
||||
if (name == null || name.trim().isEmpty) return null;
|
||||
final n = name.trim().toLowerCase();
|
||||
for (final c in indiaCities) {
|
||||
if (c.name.toLowerCase() == n) return c;
|
||||
}
|
||||
// Loose contains match (e.g. "Coimbatore District" → "Coimbatore")
|
||||
for (final c in indiaCities) {
|
||||
if (n.contains(c.name.toLowerCase()) ||
|
||||
c.name.toLowerCase().contains(n)) {
|
||||
return c;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
Reference in New Issue
Block a user