feat: filtrar profesionales por ciudad del usuario al cargar lista

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-06-27 19:26:47 -05:00
co-authored by Claude Sonnet 4.6
parent a2bcc8d86d
commit b8b56c4aaa
2 changed files with 16 additions and 4 deletions
+4 -1
View File
@@ -48,7 +48,10 @@ class AppState extends StatelessWidget {
ChangeNotifierProvider(lazy: false, create: (_) => SettingsProvider()),
ChangeNotifierProvider(create: (_) => ProfileFormProvider()),
ChangeNotifierProvider(create: (_) => ProfessionalFormProvider()),
ChangeNotifierProvider(create: (_) => ProfessionalsProvider()),
ChangeNotifierProxyProvider<AuthProvider, ProfessionalsProvider>(
create: (_) => ProfessionalsProvider(),
update: (_, auth, prev) => prev!..updateCity(auth.user?.city),
),
ChangeNotifierProvider(create: (_) => ServicesProvider()),
ChangeNotifierProvider(create: (_) => CalendarServicesProvider()),
ChangeNotifierProvider(create: (_) => CitiesProvider()),
+12 -3
View File
@@ -5,15 +5,24 @@ import 'package:prosapp_web_app/services/api_service.dart';
class ProfessionalsProvider extends ChangeNotifier {
List<UsuarioProfesional> professionals = [];
bool isLoading = true;
String? _city;
final _api = ApiService.instance;
ProfessionalsProvider() {
getProfessionals();
void updateCity(String? city) {
if (_city != city) {
_city = city;
getProfessionals();
}
}
getProfessionals() async {
isLoading = true;
notifyListeners();
try {
final res = await _api.get('/professionals');
final path = (_city != null && _city!.isNotEmpty)
? '/professionals?city=${Uri.encodeComponent(_city!)}'
: '/professionals';
final res = await _api.get(path);
final list = (res is Map ? res['data'] : res) as List;
professionals = list
.map((e) => UsuarioProfesional.fromDocument(e as Map<String, dynamic>))