This commit is contained in:
Juan Felipe Duarte
2023-04-03 09:24:49 -05:00
parent f74da665a8
commit 210b479cde
5 changed files with 230 additions and 2 deletions
+2
View File
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:prosappco/src/authentication/authentication_repository.dart';
import 'package:prosappco/src/screens/city.dart';
import 'package:prosappco/src/screens/login.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:prosappco/src/screens/login_email.dart';
@@ -33,6 +34,7 @@ class MyApp extends StatelessWidget {
'/welcome': (context) => WelcomeScreen(),
'/profile': (context) => ProfileScreen(),
'/register': (context) => RegisterScreen(),
'/city': (context) => CityScreen(),
},
onGenerateRoute: (settings) {
throw Exception('Ruta desconocida: ${settings.name}');
+210
View File
@@ -0,0 +1,210 @@
import 'package:diacritic/diacritic.dart';
import 'package:flutter/material.dart';
class CityScreen extends StatefulWidget {
const CityScreen({super.key});
@override
State<CityScreen> createState() => _CityScreenState();
}
List<String> cities = [
"Abrego",
"Aguada",
"Albania",
"Aratoca",
"Arboledas",
"Barbosa",
"Barichara",
"Barrancabermeja",
"Betulia",
"Bochalema",
"Bolivar",
"Bucaramanga",
"Bucarasica",
"Cabrera",
"Cachira",
"Cacota",
"California",
"Capitanejo",
"Carcasi",
"Cepita",
"Cerrito",
"Charala",
"Charta",
"Chima",
"Chinácota",
"Chipata",
"Chitagá",
"Cimitarra",
"Concepcion",
"Confines",
"Contratacion",
"Convención",
"Coromoro",
"Cucutilla",
"Cúcuta",
"Curiti",
"Durania",
"El Carmen",
"El Carmen de Chucuri",
"El Guacamayo",
"El Penon",
"El Playon",
"El Tarra",
"El Zulia",
"Encino",
"Enciso",
"Florian",
"Floridablanca",
"Galán",
"Gambita",
"Giron",
"Gramalote",
"Guaca",
"Guadalupe",
"Guapota",
"Guavata",
"Guepsa",
"Hacarí",
"Hato",
"Herrán",
"Jesús Maria",
"Jordan",
"La Belleza",
"La Esperanza",
"La Paz",
"La Playa",
"Landazuri",
"Labateca",
"Lebrija",
"Los Patios",
"Los Santos",
"Lourdes",
"Macaravita",
"Malaga",
"Matanza",
"Mogotes",
"Molagavita",
"Mutiscua",
"Ocaña",
"Ocamonte",
"Oiba",
"Onzaga",
"Pamplona",
"Pamplonita",
"Palmar",
"Palmas del Socorro",
"Paramo",
"Piedecuesta",
"Pinchote",
"Puente Nacional",
"Puerto Parra",
"Puerto Santander",
"Puerto Wilches",
"Ragonvalia",
"Rionegro",
"Sabana de Torres",
"Salazar",
"San Andres",
"San Benito",
"San Calixto",
"San Cayetano",
"San Gil",
"San Joaquin",
"San Jose de Miranda",
"San Miguel",
"San Vicente de Chucuri",
"Santa Barbara",
"Santa Helena del Opon",
"Santiago",
"Sardinata",
"Silos",
"Simacota",
"Socorro",
"Surata",
"Suaita",
"Sucre",
"Tibú",
"Tona",
"Toledo",
"Valle de San Jose",
"Velez",
"Vetas",
"Villa Caro",
"Villa del Rosario",
"Zapatoca",
"Villanueva",
];
class City {
final String name;
City({required this.name});
}
List<City> citiesList = cities.map((city) => City(name: city)).toList();
class _CityScreenState extends State<CityScreen> {
List<City> filteredCities = citiesList;
TextEditingController searchController = TextEditingController();
@override
void initState() {
super.initState();
searchController.addListener(() {
setState(() {
filteredCities = citiesList
.where((city) => removeDiacritics(city.name).toLowerCase().contains(
removeDiacritics(searchController.text.toLowerCase())))
.toList();
});
});
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
appBar: AppBar(
backgroundColor: Colors.white,
iconTheme: IconThemeData(
color: Colors.black,
),
title: Text(
'Seleccione su ciudad',
style: TextStyle(
color: Colors.black,
),
)),
body: Column(
children: [
Padding(
padding: EdgeInsets.only(left: 10, right: 10, top: 10),
child: TextField(
controller: searchController,
decoration: InputDecoration(
hintText: 'Buscar ciudad',
prefixIcon: Icon(Icons.near_me),
),
),
),
Expanded(
child: ListView.builder(
itemCount: filteredCities.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text(filteredCities[index].name),
onTap: () {
print(filteredCities[index].name);
},
);
},
),
),
],
),
),
);
}
}
+9 -2
View File
@@ -307,10 +307,17 @@ class _ProfileScreenState extends State<ProfileScreen> {
20.0), // Agrega espacio vertical entre los TextFormFields
TextFormField(
controller: controller.city,
readOnly: true,
onTap: () {
Navigator.pushNamed(context, '/city');
},
decoration: InputDecoration(
prefixIcon: Icon(Icons.near_me),
hintText: 'Ciudad'),
prefixIcon: Icon(Icons.near_me),
suffixIcon: Icon(Icons.arrow_drop_down),
hintText: 'Ciudad',
),
),
SizedBox(
height:
20.0), // Agrega espacio vertical entre los TextFormFields
+8
View File
@@ -81,6 +81,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.5"
diacritic:
dependency: "direct main"
description:
name: diacritic
sha256: c09a420e737dc036122121fea9f774767e95068f34a17894ee9db30c5bda3075
url: "https://pub.dev"
source: hosted
version: "0.1.3"
fake_async:
dependency: transitive
description:
+1
View File
@@ -46,6 +46,7 @@ dependencies:
flutter_otp_text_field: ^1.1.1
intl_phone_field: ^3.1.0
cloud_firestore: ^4.5.0
diacritic: ^0.1.3
dev_dependencies:
flutter_test: