arch-atlas

Profile Tab + Detail Screens

profile/profile_tab_page.dart · profile.dart · profile_details.dart · login_required_profile.dart

presentation

Overview

Four screens forming the profile surface. ProfileTabPage is the bottom-nav tab (or LoginRequiredProfile when guest). ProfilePage is the in-shell menu screen. ProfileDetailsPage renders the full info card. SeavenProfileHeader and InstagramProfileHeader pick the layout per role.

User Flow

  1. ProfileTabPage decides login vs not-login based on authStateProvider.
  2. LoginRequiredProfile shows the login/register CTAs for guests.
  3. ProfilePage shows the menu of actions (manage profile, settings, become seller, devenir prestataire, logout).
  4. ProfileDetailsPage watches personalInfoProvider and renders the cards (info, addresses, etc.).
  5. BecomeSellerBanner appears for clients only — links to /devenir-prestataire.

Cases & Edge Cases

  • MetiersBottomSheet (seller-only) lets a seller pick or edit their métiers; consumed by currentSellerTradesProvider.
  • Avatar editing happens elsewhere (ManageProfileScreen) — the headers are read-only.
  • Pull-to-refresh on the tab triggers personalInfoNotifier.refreshPersonalInfo.

Code References

  • lib/src/features/shared/profile/profile_tab_page.dart
  • lib/src/features/shared/profile/profile.dart
  • lib/src/features/shared/profile/profile_details.dart
  • lib/src/features/shared/profile/login_required_profile.dart
  • lib/src/features/shared/profile/widgets/seaven_profile_header.dart
  • lib/src/features/shared/profile/widgets/instagram_profile_header.dart

API Calls

Empty — fill this in later. Open the manifest and add content here.

Notes

Two header variants (Seaven and Instagram) are an A/B-style holdover from a redesign sprint — only one is currently shown in production.