Skip to content

Pharmacies

Source: pharmanet/lib/features/pharmacy/

Pages

Page File Description
PharmacyDetailPage features/pharmacy/presentation/pages/pharmacy_detail_page.dart Full pharmacy profile
PharmacyCatalogPage features/pharmacy/presentation/pages/pharmacy_catalog_page.dart Pharmacy's product listing
PharmaciesMapPage features/pharmacy/presentation/pages/pharmacies_map_page.dart Map view of nearby pharmacies

APIs

Source: pharmanet/lib/core/api/pharmacy_api.dart

Method Description
fetchAllPharmacies() All approved pharmacies
getPharmacyById(id) Single pharmacy detail
fetchNearbyPharmacies(lat, lng, radius) Subscribed pharmacies within radius
fetchPharmacyProducts() Current pharmacy's products (seller)
getPharmacyDashboard() Dashboard stats (seller)
registerPharmacy(...) Apply as a pharmacy
updatePharmacyProfile(data) Update store profile
updateLocation(lat, lng) Update user's location

Providers

Provider Type Description
pharmaciesProvider FutureProvider<List<Pharmacy>> All approved pharmacies
nearbyPharmaciesProvider FutureProvider<List<Pharmacy>> Nearby subscribed pharmacies
pharmacyDetailsProvider FutureProvider.family<String> Single pharmacy details
locationProvider StateNotifierProvider<LocationState> Current GPS position

Nearby Pharmacy Filtering

Pharmacies are filtered by subscription status:

  • Only pharmacies with an active subscription appear in the nearby list
  • A DB view pharmacy_subscription_status computes visibility
  • Non-subscribed pharmacies are hidden from customer discovery
  • This incentivizes pharmacy subscription purchases

Map Integration

The PharmaciesMapPage uses flutter_map with OpenStreetMap tiles:

import 'package:flutter_map/flutter_map.dart';
import 'package:latlong2/latlong.dart';

MapController mapController = MapController();
// Markers from nearbyPharmaciesProvider
// Current location marker from locationProvider

Pharmacy Detail

The detail page shows: - Store banner + logo - Store name, description, rating - Operating hours (if configured) - Contact info (phone, email, address) - Pharmacist license info - "Chat" button to start conversation - Products tab (catalog)

  • Products — Pharmacy catalog per store
  • Chat — In-app messaging with pharmacists
  • Home — Nearby pharmacies on home screen