Deep Links
Configure and test the Flutter link host used by verification and password-reset flows.
Current contract
The Flutter template registers the flonlate scheme and the link host. resolveAccountDeepLink allowlists the destination before AutoRoute navigates:
flonlate://link?destination=reset-password&token=...&email=...Supported destinations:
destination=reset-passwordwith exactly one non-empty token and valid email.destination=email-verifiedwith no action parameters.
Unknown destinations, duplicate values, malformed emails, or unexpected query keys fall back to the normal authenticated/onboarding destination. Guest mode ignores Account deep links.
Password reset
The backend should generate /link links, not direct arbitrary navigation:
flonlate://link?destination=reset-password&token=RESET_TOKEN&email=user%40example.comFlutter validates the parameters and then routes to AutoRoute's /reset-password page, which submits the token/email to Laravel.
Email verification
flonlate://link?destination=email-verifiedAfter browser verification, the Account bootstrap refreshes the authenticated user and returns to the normal app destination.
Native configuration
The scheme/host is configured in:
lib/constants/api_endpoints.dart(deepLinkScheme = 'flonlate').android/app/src/main/AndroidManifest.xml(scheme=flonlate,host=link).ios/Runner/Info.plistURL types.
The current identifiers are com.soewidiputra.flonlate.mobile. If you rename them, update Firebase, Apple/Google credentials, Android/iOS URL registration, and backend-generated links together.
Testing
Use a native debug/release-like build:
adb shell am start -a android.intent.action.VIEW \
-d 'flonlate://link?destination=reset-password&token=TEST_TOKEN&email=user%40example.com' \
com.soewidiputra.flonlate.mobileOn iOS, use Xcode or simctl openurl with the same scheme. Validate the malformed/unknown-destination fallback as well as the happy path.
Relevant files
lib/bootstrap/account_bootstrap.dartlib/constants/api_endpoints.dartlib/main.dartlib/app_router.dartandroid/app/src/main/AndroidManifest.xmlios/Runner/Info.plist
