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_statuscomputes 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)