crossmint_flutter_ui.dart. These pull in Material Design dependencies — if you prefer a fully headless approach, use the controllers directly.
CrossmintWalletStatusBuilder
Reactive widget that rebuilds whenever the wallet status or instance changes.Props
Usage
CrossmintWalletConsumer
Provides access to the wallet context data from the widget tree.Usage
CrossmintOtpSignerListener
Automatically listens for OTP challenges and shows the appropriate dialog. This is a Flutter advantage over React Native — OTP prompts are handled declaratively.Props
Usage
CrossmintAuthForm
Pre-built authentication form with email OTP and OAuth buttons.Props
Custom title shown on the OTP verification step (e.g. “Sign in to Acme”).
Usage
CrossmintEmailSignIn
Email OTP sign-in form widget.Props
Optional view model override. When
null, the widget constructs a fresh [CrossmintEmailSignInViewModel] bound to [auth] and disposes it with the widget. When provided, the widget observes the view model but does not dispose it — the caller owns the lifecycle.Custom title for the OTP verification step. Defaults to
'Check your email'.Usage
CrossmintGoogleSignInButton / CrossmintTwitterSignInButton
OAuth sign-in buttons.Props
Auth client used to start the OAuth flow.
Called after the OAuth flow completes successfully. Use this to navigate away or refresh dependent state.
Called when the OAuth flow throws. Receives the underlying exception so consumers can surface a localized error message.
When false, the button is rendered in a disabled visual state and taps do not start the OAuth flow. Defaults to true.
Usage
CrossmintExportPrivateKeyButton
Renders a button that allows the user to export their wallet’s private key. Only works with email and phone signers. Will not render for passkey or external wallet signers.Props
Wallet whose private key will be exported. The button only renders when [CrossmintRuntimeWalletBase.canExportPrivateKey] is true (email/phone signer wallets).
Called after the export flow completes successfully.
Called when the export flow throws. Receives the underlying exception so consumers can surface a localized error message.
Optional builder for the button visual. When
null, falls back to the React Native parity Material OutlinedButton with a themed CircularProgressIndicator while the export is in flight. When non-null, the builder is invoked whenever the wallet is eligible to export and receives the current isLoading flag plus an onExport callback that the consumer wires to their own tap target. The onExport callback is null while loading so consumers can disable their button directly without a separate mounted check.Usage
CrossmintEmbeddedCheckout
WebView-based checkout widget for handling payments (fiat and crypto).Props
Crossmint API key.
Checkout configuration (order, payment, appearance).
Optional crypto payer override for signing transactions within checkout.
Optional reactive controller for checkout order state.
Called when the order state changes.
Called when order creation fails.
Called when the hosted checkout emits a runtime diagnostic.
Optional builder for the loading overlay rendered on top of the hosted checkout WebView while the page is loading. When
null, the widget falls back to a Material CircularProgressIndicator inside a themed background container (the React Native Crossmint SDK parity default).Initial height before the hosted page reports its actual height.
Usage
CrossmintNftCard / CrossmintNftCollectionView / CrossmintNftDetailView
Widgets for displaying NFT content. These are Flutter-only features not available in the React Native SDK.Usage
CrossmintPaymentMethodManagement
Widget for managing saved payment methods. This is a Flutter-only feature.Props
Crossmint API key.
JWT token for authenticated access (required by the hosted page).
Optional appearance overrides (reuses the checkout appearance config).
Optional builder for the loading overlay rendered on top of the hosted payment-method-management WebView while the page is loading. When
null, the widget falls back to a Material CircularProgressIndicator inside a themed background container (the React Native Crossmint SDK parity default).Initial height before the hosted page reports its actual height.
Usage
CrossmintWalletUiState (data.state)
The state exposed on CrossmintWalletContextData (the second argument of every builder). Fields and convenience getters:
| Field / getter | Type | Description |
|---|---|---|
isInitializing | bool | |
isLoadingWallet | bool | |
authState | CrossmintAuthState | |
walletStatus | CrossmintWalletStatus | |
currentWallet | CrossmintWallet? | |
pendingOtpChallenge | CrossmintOtpChallenge? | |
initializationError | Object? | |
walletError | Object? | |
isAuthenticated | bool | |
isLoggedOut | bool | |
user | CrossmintAuthenticatedUser? | |
authErrorMessage | String? | |
error | Object? | |
errorMessage | String? | |
hasWallet | bool | |
needsOtp | bool |

