diff --git a/lib/main.dart b/lib/main.dart index 68a86a9..c378ee5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -48,7 +48,10 @@ class AppState extends StatelessWidget { ChangeNotifierProvider(lazy: false, create: (_) => SettingsProvider()), ChangeNotifierProvider(create: (_) => ProfileFormProvider()), ChangeNotifierProvider(create: (_) => ProfessionalFormProvider()), - ChangeNotifierProvider(create: (_) => ProfessionalsProvider()), + ChangeNotifierProxyProvider( + create: (_) => ProfessionalsProvider(), + update: (_, auth, prev) => prev!..updateCity(auth.user?.city), + ), ChangeNotifierProvider(create: (_) => ServicesProvider()), ChangeNotifierProvider(create: (_) => CalendarServicesProvider()), ChangeNotifierProvider(create: (_) => CitiesProvider()), diff --git a/lib/providers/professionals_provider.dart b/lib/providers/professionals_provider.dart index 377b62d..da067f0 100644 --- a/lib/providers/professionals_provider.dart +++ b/lib/providers/professionals_provider.dart @@ -5,15 +5,24 @@ import 'package:prosapp_web_app/services/api_service.dart'; class ProfessionalsProvider extends ChangeNotifier { List 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))