crossmint_flutter_ui library
Opt-in default UI for the Crossmint Flutter SDK.
Importing this barrel pulls package:flutter/material.dart in transitively
and unlocks the React Native parity widgets:
- Wallet scopes / providers: CrossmintWalletProvider, CrossmintWalletGate, CrossmintWalletStatusBuilder, CrossmintWalletContext, CrossmintWalletConsumer, CrossmintClientScope, CrossmintAuthScope, CrossmintWalletScope.
- OTP prompts: CrossmintWalletOtpPrompt, CrossmintEmailOtpDialog, CrossmintPhoneOtpDialog, and the default builder crossmintDefaultOtpPromptBuilder.
- Auth UI: CrossmintAuthForm, Google / Twitter sign-in buttons, email sign-in view.
- NFT UI: CrossmintNftCard, CrossmintNftCollectionView, CrossmintNftDetailView.
- Checkout: CrossmintEmbeddedCheckout, CrossmintCheckoutConfig,
CrossmintCheckoutController, CrossmintEvmWalletCheckoutPayer
(bridges a runtime EVM wallet into the checkout payer contract), and
the
crypto:*event-builder helpers incrossmint_checkout_events.dart. - Payment methods: CrossmintPaymentMethodManagement.
- Export flows: CrossmintExportPrivateKeyButton.
- Theming: CrossmintTheme.
If you want to keep your app Material-free, import
crossmint_flutter.dart (headless) and leave this file alone. You can
still drive OTP flows with your own UI by leaving
CrossmintWalletProviderConfig.otpPromptBuilder null and subscribing to
walletController.otp directly.
Classes
- AppLinksCrossmintAuthLinkProvider
- CredentialsApiService
- CredentialService
- CrossmintApiConfig
- Base configuration shared by every Crossmint SDK client.
- CrossmintApiKeySigner
- A signer that delegates all signing to the Crossmint backend via API key authentication.
- CrossmintApiKeySignerConfig
- CrossmintApiVersions
- Centralised API version path prefixes used by every Crossmint service.
- CrossmintAuthAuthenticated
- CrossmintAuthCallbackRouter
- CrossmintAuthClient
- Authentication sub-client — email OTP, OAuth, wallet sign-in, and session lifecycle. Exposed on CrossmintClient.auth.
- CrossmintAuthenticatedUser
- CrossmintAuthForm
- Combined auth form matching the official Crossmint RN SDK auth layout.
- CrossmintAuthInitializing
- CrossmintAuthInProgress
- CrossmintAuthLauncher
- CrossmintAuthLinkProvider
- CrossmintAuthLoggedOut
- CrossmintAuthScope
-
Provides CrossmintAuthClient to descendant widgets, matching the
official Crossmint RN SDK's
CrossmintAuthProviderpattern. - CrossmintAuthSession
- CrossmintAuthSessionCodec
- CrossmintAuthState
- CrossmintAuthStorage
- CrossmintCheckoutAppearance
- UI customization for the hosted checkout page.
- CrossmintCheckoutCollectionLineItem
- Line item that mints from a Crossmint collection. Usually built via CrossmintCheckoutLineItem.collection.
- CrossmintCheckoutConfig
- Configuration for CrossmintEmbeddedCheckout.
- CrossmintCheckoutController
-
Reactive controller for checkout order state, matching the official
Crossmint RN SDK's
useCrossmintCheckout()hook. - CrossmintCheckoutCryptoPayment
- Crypto payment configuration — on-chain payment via a user-connected wallet or the Crossmint-hosted wallet flow.
- CrossmintCheckoutDiagnostic
- Structured runtime signal emitted by CrossmintEmbeddedCheckout.
- CrossmintCheckoutEmailRecipient
- Email-based recipient — mints into a Crossmint-managed wallet associated with the email address. Pair with physicalAddress when the line items include physical fulfillment.
- CrossmintCheckoutExistingOrder
- Reference an existing Crossmint order by ID.
- CrossmintCheckoutFiatPayment
- Fiat payment configuration — credit card, Apple Pay, Google Pay.
- CrossmintCheckoutLineItem
- A single asset to purchase in a checkout order.
- CrossmintCheckoutNewOrder
- Create a new order inline with line items, recipient, and locale.
- CrossmintCheckoutOrder
- How to create an order: reference an existing one or define new line items.
- CrossmintCheckoutPayer
- Interface for apps to provide crypto wallet signing capabilities.
- CrossmintCheckoutPayment
- Payment configuration for the embedded checkout.
- CrossmintCheckoutPhysicalAddress
- Shipping address used for physical goods. Required on CrossmintCheckoutPhysicalRecipient; optional on email and wallet recipients whose line items include physical fulfillment.
- CrossmintCheckoutPhysicalRecipient
- Physical-only recipient — ships a physical good without minting to a wallet. Requires both email (for receipts / order updates) and physicalAddress.
- CrossmintCheckoutProductLineItem
- Line item that purchases a product (often physical or hybrid). Usually built via CrossmintCheckoutLineItem.product.
- CrossmintCheckoutRawLineItem
- Escape-hatch line item that passes an arbitrary JSON shape straight to the Crossmint API. Use when the current SDK models do not cover a new API field. Usually built via CrossmintCheckoutLineItem.raw.
- CrossmintCheckoutRecipient
- Who receives the minted NFT (or ships the physical good) — sealed across email, wallet, and physical-only variants. Concrete subclasses: CrossmintCheckoutEmailRecipient, CrossmintCheckoutWalletRecipient, CrossmintCheckoutPhysicalRecipient.
- CrossmintCheckoutTokenExecutionLineItem
- Line item that executes a token purchase with arbitrary execution parameters. Usually built via CrossmintCheckoutLineItem.tokenWithExecutionParameters.
- CrossmintCheckoutTokenLineItem
- Line item that purchases a specific token. Usually built via CrossmintCheckoutLineItem.token.
- CrossmintCheckoutTransactionFailure
- Returned when the payer could not complete the transaction. The hosted page surfaces errorMessage to the user.
- CrossmintCheckoutTransactionResult
- Result of a CrossmintCheckoutPayer.signAndSendTransaction call — sealed across success and failure variants.
- CrossmintCheckoutTransactionSuccess
- Returned when the payer successfully signed and broadcast a transaction.
- CrossmintCheckoutWalletRecipient
- External-wallet recipient — mints directly to a wallet address the user controls. Use this when checking out to a MetaMask / Phantom / other third-party wallet. Pair with physicalAddress when the line items include physical fulfillment.
- CrossmintClient
- Top-level facade for the Crossmint SDK.
- CrossmintClientConfig
- Configuration for CrossmintClient.
- CrossmintClientRuntimeOverrides
- CrossmintClientScope
- CrossmintContractMetadataService
- Fetches and validates on-chain contract metadata (ERC-7572) for verifiable credential collections.
- CrossmintCreateOnLoginConfig
- CrossmintCredentialDecryptRequest
- CrossmintCredentialFilter
- CrossmintCredentialLocator
- CrossmintCredentialMetadata
- CrossmintCredentialNftLookupResult
- CrossmintCredentialQuery
- CrossmintCredentialRecord
- CrossmintCredentialRetrievalProcedure
- CrossmintCredentialsClient
- CrossmintCredentialsCollection
- CrossmintCredentialType
- CrossmintCredentialVerificationResult
- CrossmintCredentialWalletAuthChallenge
- CrossmintDecrypt
- CrossmintDecryptedCredential
- CrossmintDelegationSignatureService
- Fetches a Lit Protocol capacity delegation signature from the Crossmint API.
- CrossmintDeviceSignerConfig
- CrossmintDeviceSignerDescriptor
- CrossmintDeviceWalletSigner
- Hardware-backed approval signer — keys live in Secure Enclave (iOS) or Android Keystore, never in Dart memory.
- CrossmintEmailOtpChallenge
- CrossmintEmailOtpDialog
-
Email OTP signer dialog matching the official Crossmint RN SDK
EmailSignersDialogcomponent. - CrossmintEmailSignerConfig
- CrossmintEmailSignIn
- Email sign-in widget with OTP verification, matching the official Crossmint RN SDK email auth flow.
- CrossmintEmailSignInViewModel
-
Headless view model for the SDK's email + OTP sign-in flow. Owns the
state machine (current step, loading flag, error, OTP challenge id,
resend cooldown) and the authentication calls against
CrossmintAuthClient, so the default-UI
CrossmintEmailSignInwidget can become a thin presentational layer and headless consumers can reuse the same state machine behind their own design system. - CrossmintEmbeddedCheckout
-
Embedded checkout widget matching the official Crossmint RN SDK
CrossmintEmbeddedCheckoutV3. - CrossmintEncryptedVerifiableCredential
- CrossmintEvmExternalWalletSigner
- EVM variant of CrossmintExternalWalletSigner. Signs both arbitrary messages (via the EIP-191 personal-message path the SDK assembles) and raw transaction payloads.
- CrossmintEvmNonCustodialSigner
- EVM variant of CrossmintNonCustodialSigner. Signs with secp256k1 keys using hex encoding. Applies the EIP-191 personal-message prefix when signing arbitrary strings.
- CrossmintEvmTransactionCall
- CrossmintEvmTransactionRequest
- CrossmintEvmWallet
- Runtime wallet for EVM chains (Base, Ethereum, Polygon, Optimism, etc.).
- CrossmintEvmWalletCheckoutPayer
- Bridges a CrossmintEvmWallet into the checkout payer contract.
- CrossmintExportableWalletSigner
- Marker interface for signers that can hand back the raw private key to the user — primarily non-custodial email and phone signers.
- CrossmintExportPrivateKeyButton
-
Export private key button matching the official Crossmint RN SDK
ExportPrivateKeyButtoncomponent. - CrossmintExportSignerBridge
- CrossmintExportSignerBridgeClient
- CrossmintExportSignerBridgeRuntimeController
- CrossmintExternalWalletSigner
- Base class for external-wallet delegated signers — wallets the user owns (e.g. MetaMask, Rainbow, Phantom) where the SDK never holds keys. In Crossmint terminology, an external wallet is a flavor of delegated signer that approves operations through the user's own wallet UI.
- CrossmintExternalWalletSignerConfig
- CrossmintGoogleSignInButton
- Google sign-in button matching the official Crossmint RN SDK.
- CrossmintHttpTransport
- CrossmintLogger
- CrossmintNftCard
- Card widget for a single NFT, used inside CrossmintNftCollectionView.
- CrossmintNftCollectionView
- Grid view of NFT cards for a wallet's NFT collection.
- CrossmintNftDetailView
- Full detail view for a single NFT.
- CrossmintNftRecord
- CrossmintNftService
- On-chain NFT service for VC operations: burn checks, token URIs, and contract metadata URIs.
- CrossmintNonCustodialSigner
- Base class for email / phone non-custodial signers.
- CrossmintOrderCreateRequest
- CrossmintOrderReadRequest
- CrossmintOrderRecord
- CrossmintOrdersClient
- CrossmintOrderUpdateRequest
- CrossmintOtpChallenge
- CrossmintOtpSignerListener
- CrossmintPasskeyApprovalSigner
- Passkey-based CrossmintWalletApprovalSigner that delegates signing to a caller-supplied callback.
- CrossmintPasskeyConfig
- CrossmintPasskeyCredential
- CrossmintPasskeySignerConfig
- CrossmintPasskeySignerFactory
- Experimental factory for creating a passkey signer config.
- CrossmintPasskeySignMetadata
- CrossmintPasskeySignResult
- CrossmintPaymentMethodManagement
-
Payment method management widget matching the official Crossmint RN SDK
CrossmintPaymentMethodManagement. - CrossmintPendingSignerOperation
- CrossmintPhoneOtpDialog
-
Phone OTP signer dialog matching the official Crossmint RN SDK
PhoneSignersDialogcomponent. - CrossmintPhoneSignerConfig
- CrossmintPollingConfig
- Configuration for exponential-backoff polling loops used throughout the SDK.
- CrossmintRequestOptions
- CrossmintRuntimeWalletBase
- CrossmintSecureStorageAdapter
- CrossmintServerSignerConfig
- CrossmintSignatureRecord
- CrossmintSignerBridgeClient
- CrossmintSignerBridgePublicKey
- CrossmintSignerBridgeSignature
- CrossmintSignerBridgeSignResult
- CrossmintSignerBridgeStatusResult
- CrossmintSignerConfig
- CrossmintSolanaExternalWalletSigner
- Solana variant of CrossmintExternalWalletSigner. Signs transactions only — raw-message signing is not supported on Solana.
- CrossmintSolanaNonCustodialSigner
-
Solana variant of CrossmintNonCustodialSigner. Signs with ed25519 keys
using base58 encoding.
signMessageis intentionally unsupported — Solana only supports transaction signing. - CrossmintSolanaTransactionRequest
- CrossmintSolanaWallet
- Runtime wallet for Solana.
- CrossmintStellarContractCallRequest
- CrossmintStellarExternalWalletSigner
- Stellar variant of CrossmintExternalWalletSigner. Signs transactions only — raw-message signing is not supported on Stellar.
- CrossmintStellarNonCustodialSigner
-
Stellar variant of CrossmintNonCustodialSigner. Signs with ed25519 keys
using base64 encoding.
signMessageis intentionally unsupported — Stellar only supports transaction signing. - CrossmintStellarSerializedTransactionRequest
- CrossmintStellarTransactionRequest
- CrossmintStellarWallet
- Runtime wallet for Stellar — including Soroban smart-contract calls.
- CrossmintTheme
- CrossmintThemeData
- CrossmintTokenAvailabilityRecord
- CrossmintTokenAvailabilityResult
- CrossmintTokenQuery
- CrossmintTokensClient
- CrossmintTransactionRecord
- CrossmintTransport
- CrossmintTransportResponse
- CrossmintTwitterSignInButton
- Twitter/X sign-in button matching the official Crossmint RN SDK.
- CrossmintTypedData
- CrossmintUser
- CrossmintUserCreateRequest
- CrossmintUserLookupRequest
- CrossmintUsersClient
- CrossmintVcConfig
- Configuration for VC on-chain services: RPC endpoints, IPFS gateways, and timeouts.
- CrossmintVcIssuer
- CrossmintVcNft
- CrossmintVcRpcClient
- Minimal JSON-RPC client for read-only Ethereum contract calls.
- CrossmintVerifiableCredential
- CrossmintVerifiableCredentialEncryption
- CrossmintWallet
- CrossmintWalletActionsViewModel
- CrossmintWalletAddSignerResult
- CrossmintWalletApprovalSigner
- CrossmintWalletApprovedSignatureResult
- CrossmintWalletApprovedTransactionResult
- CrossmintWalletApproveRequest
- CrossmintWalletApproveResult
- CrossmintWalletAuthChallenge
- Challenge returned by CrossmintAuthClient.signInWithWallet that must be signed by the user's external wallet (MetaMask, Phantom, etc.).
- CrossmintWalletBalanceSnapshot
- CrossmintWalletConsumer
- CrossmintWalletContext
- CrossmintWalletContextData
- CrossmintWalletController
- Stateful orchestrator for Crossmint wallets in a Flutter app.
- CrossmintWalletControllerConfig
- Configuration for CrossmintWalletController.
- CrossmintWalletCreateRequest
- CrossmintWalletFundRequest
- CrossmintWalletFundResult
- CrossmintWalletGate
- CrossmintWalletHost
- Advanced runtime host that mounts the client/auth/wallet scopes plus the hidden bridge hosts required for signer/export flows.
- CrossmintWalletLifecycleCallbacks
- Optional lifecycle hooks invoked at key points in the wallet controller.
- CrossmintWalletLookupRequest
- CrossmintWalletNftPage
- CrossmintWalletOtpController
- Drives OTP challenges raised by non-custodial email and phone signers.
- CrossmintWalletOtpPrompt
- CrossmintWalletOtpViewModel
- CrossmintWalletProvider
- Recommended app-facing integration widget — owns client, auth, and wallet-controller lifecycle plus the hidden signer bridge host.
- CrossmintWalletProviderConfig
- Configuration for CrossmintWalletProvider.
- CrossmintWalletProviderDependencies
- Pre-built dependency bundle accepted by CrossmintWalletProviderConfig.
- CrossmintWalletProviderLifecycle
- CrossmintWallets
- Stateless convenience facade for wallet operations.
- CrossmintWalletsClient
- CrossmintWalletScope
- Provides CrossmintWalletController to descendant widgets.
- CrossmintWalletSessionViewModel
- CrossmintWalletSignatureApproveRequest
- CrossmintWalletSignatureCreateRequest
- CrossmintWalletSignatureListRequest
- CrossmintWalletSignatureLookupRequest
- CrossmintWalletSigner
- CrossmintWalletStateRepository
-
Single source of truth for the wallet state surfaced by
CrossmintWalletControllerand the wallet provider UI layer. Holds the currently-loaded wallet, its identifier, and the lifecycle status; emitsnotifyListeners()whenever any of those change. - CrossmintWalletStateView
-
Read-only observation surface for the wallet state held by the
CrossmintWalletController. Exposed viaCrossmintWalletController.stateso advanced consumers can subscribe to wallet / status changes directly without reaching into the controller, while still routing all mutations through the controller's public API. - CrossmintWalletStatusBuilder
- CrossmintWalletTokenTransferRequest
- CrossmintWalletUiState
- CrossmintWorldstoreListingRecord
- CrossmintWorldstoreListingSearchResult
- CrossmintWorldstoreOrderCreateRequest
- CrossmintWorldstoreSearchRequest
- DeviceSignerKeyStorage
- DeviceSignerKeyStorageInternal
- Eip712VerificationInvalid
- The proof was rejected. reason is a short, non-user-facing label describing which structural check failed.
- Eip712VerificationResult
- Outcome of an EIP-712 proof verification attempt.
- Eip712VerificationStructuralOnly
- The proof's envelope is well-formed (issuer DID parses, signature is 65 bytes) but the signature was not cryptographically verified.
- Eip712VerificationValid
- The proof was cryptographically verified against the issuer's address.
- FlutterSecureStorageAdapter
- HiddenSignerBridge
- HiddenSignerBridgeConfig
- HiddenSignerBridgeHost
- HiddenSignerBridgePort
- HiddenSignerBridgeRuntimeController
- HiddenSignerBridgeState
- InMemoryCrossmintAuthStorage
- InMemoryCrossmintSecureStorageAdapter
- NoopCrossmintLogger
- SecureStorageCrossmintAuthStorage
- SoftwareDeviceSignerKeyStorage
- Software-backed device signer key storage for dev/test environments.
- UnsupportedPasskeySignerFactory
- Fallback factory used when the Flutter runtime does not provide a concrete passkey implementation.
- UrlLauncherCrossmintAuthLauncher
- WalletAuthService
- WalletsApiService
Enums
- CrossmintBiometricPolicy
- CrossmintChain
- Supported Crossmint blockchain chains.
- CrossmintChainFamily
- Top-level blockchain family discriminator.
- CrossmintCheckoutDefaultMethod
- Typed default payment method — which tab/method the hosted checkout opens on.
- CrossmintCheckoutDiagnosticSeverity
- Severity classification for CrossmintCheckoutDiagnostic.
- CrossmintEmailSignInStep
- Discrete UI steps for the email + OTP sign-in flow.
- CrossmintEnvironment
- CrossmintErrorCode
- Typed error codes for programmatic exception handling.
- CrossmintExportSignerEncoding
- CrossmintOAuthProvider
- CrossmintSignerBridgeStatus
- CrossmintSignerEncoding
- CrossmintSignerKeyType
- CrossmintVcChain
- CrossmintVerifiableCredentialEncryptionType
- CrossmintWalletStatus
-
Wallet lifecycle status matching the official Crossmint RN SDK wallet
context. Exposed as the status surface of both
CrossmintWalletController(via its getter) and the underlyingCrossmintWalletStateRepository(the SSOT that owns the field). - HiddenSignerBridgePhase
Constants
- crossmintDefaultOtpPromptBuilder → const CrossmintOtpPromptBuilder
- Default CrossmintOtpPromptBuilder that mounts the Material-based CrossmintWalletOtpPrompt used by the React Native Crossmint SDK.
- kCheckoutConnectWalletShow → const String
- The hosted checkout requests wallet connection UI.
- kCheckoutCryptoLoad → const String
- The hosted checkout initialized its crypto payment subsystem.
- kCheckoutHeightChanged → const String
- The hosted checkout page reported a new content height.
- kCheckoutOrderCreationFailed → const String
- Order creation failed on the server.
- kCheckoutOrderUpdated → const String
- The order state changed (new phase, updated quote, etc.).
- kCheckoutSendTransaction → const String
- The hosted checkout requests a transaction to be signed and sent.
- kCheckoutSignMessage → const String
- The hosted checkout requests a message to be signed.
- kContractUriSelector → const String
-
ERC-7572
contractURI()selector. - kCrossmintFlutterSdkVersion → const String
-
Version of the
crossmint_flutterSDK reported to the Crossmint backend (e.g. viasdkMetadataquery parameters on embedded checkout). - kOwnerOfSelector → const String
-
ERC-721
ownerOf(uint256)selector. - kTokenUriSelector → const String
-
ERC-721
tokenURI(uint256)selector. - kZeroAddress → const String
- Ethereum zero address.
Functions
-
abiDecodeAddress(
String hexData) → String - Decodes an ABI-encoded address (last 20 bytes of a 32-byte word).
-
abiDecodeString(
String hexData) → String - Decodes an ABI-encoded dynamic string (offset + length + data).
-
abiEncodeUint256(
String tokenId) → String - Encodes a uint256 token ID as a 32-byte hex word (no 0x prefix).
-
buildCheckoutConnectWalletFailed(
String error) → Map< String, Object?> -
Builds the reply sent back when wallet connection fails.
erroris surfaced to the user inside the hosted page. -
buildCheckoutConnectWalletSuccess(
{required String address, required String chain, String? walletProviderKey}) → Map< String, Object?> -
Builds the reply sent back when wallet connection succeeds. Pass the
wallet
address, the connectedchain, and optionally the provider identifier (e.g."metamask","coinbase"). -
buildCheckoutCryptoLoadSuccess(
) → Map< String, Object?> - Builds the reply the Flutter side sends after the crypto subsystem is ready.
-
buildCheckoutDispatchScript(
String eventJson) → String -
Builds a JavaScript snippet that dispatches
eventJsoninto the WebView. -
buildCheckoutSendTransactionFailed(
String error) → Map< String, Object?> -
Builds the reply sent back when the transaction could not be signed /
broadcast.
erroris shown to the user. -
buildCheckoutSendTransactionSuccess(
String txId) → Map< String, Object?> -
Builds the reply sent back when the transaction was signed and broadcast
successfully.
txIdis the resulting transaction hash / signature. -
buildCheckoutSignMessageFailed(
String error) → Map< String, Object?> -
Builds the reply sent back when message signing fails.
erroris shown to the user. -
buildCheckoutSignMessageSuccess(
String signature) → Map< String, Object?> -
Builds the reply sent back when an arbitrary message was signed
successfully.
signatureis the user's signature. -
createDefaultDeviceSignerKeyStorage(
) → DeviceSignerKeyStorage - Creates the default device signer key storage.
-
createSoftwareDeviceSignerKeyStorage(
) → DeviceSignerKeyStorage - Creates a software-only device signer for dev/test use.
-
crossmintAliasFromWalletLocator(
String locator) → String? -
crossmintApiBaseUriForConfig(
CrossmintApiConfig config) → Uri -
crossmintApiBaseUriForEnvironment(
CrossmintEnvironment environment) → Uri -
crossmintAssertBridgeHosted(
HiddenSignerBridge bridge) → void -
Throws if
bridgeis the SDK's default runtime controller and noHiddenSignerBridgeHosthas ever attached a port to it. -
crossmintConfigSignersFromWallet(
CrossmintWallet wallet) → List< CrossmintJsonMap> -
crossmintDedupeSigners(
List< CrossmintWalletApprovalSigner> signers) → List<CrossmintWalletApprovalSigner> -
Deduplicates a list of approval signers by
locator, keeping the first occurrence of each. Used when composing a runtime wallet's primary + additional signers so the same signer can never appear twice. -
crossmintEnvironmentForConfig(
CrossmintApiConfig config) → CrossmintEnvironment -
crossmintEnvironmentFromApiKey(
String apiKey) → CrossmintEnvironment -
crossmintEnvironmentFromUri(
Uri uri) → CrossmintEnvironment -
crossmintExportSignerBridgeUriForConfig(
CrossmintClientConfig config) → Uri -
crossmintHasInlineApprovals(
CrossmintWalletApproveRequest request) → bool -
crossmintIsRawHexApprovalMessage(
String value) → bool -
crossmintIsRecoverySigner(
CrossmintWallet wallet, CrossmintWalletApprovalSigner signer) → bool -
crossmintIsSolanaChain(
String chain) → bool -
crossmintIsStellarChain(
String chain) → bool -
crossmintListEquals<
T> (List< T> ? a, List<T> ? b) → bool -
Structural equality for two nullable lists. Both null → equal. One null →
not equal. Otherwise length + element-wise
==comparison. -
crossmintListHash<
T> (List< T> ? list) → int - Combines the hash codes of a list's elements in order. Null → 0.
-
crossmintMapEquals<
K, V> (Map< K, V> ? a, Map<K, V> ? b) → bool -
Structural equality for two nullable maps. Both null → equal. One null →
not equal. Otherwise length + key-wise
==comparison. -
crossmintMapHash<
K, V> (Map< K, V> ? map) → int -
Combines the hash codes of a map's entries. Null → 0. Entries are combined
as
(key, value)pairs so the result is sensitive to both keys and values but order-independent across maps with identical content. -
crossmintNftAttributes(
CrossmintNftRecord nft) → List< Map< String, String> > - Extracts NFT attributes (trait_type / value pairs) for display.
-
crossmintNftChain(
CrossmintNftRecord nft) → String? -
crossmintNftContractAddress(
CrossmintNftRecord nft) → String? -
crossmintNftDescription(
CrossmintNftRecord nft) → String? -
crossmintNftImageUrl(
CrossmintNftRecord nft) → String? -
crossmintNftName(
CrossmintNftRecord nft) → String? - Extracts display-friendly metadata from the raw NFT JSON.
-
crossmintNftTokenId(
CrossmintNftRecord nft) → String? -
crossmintNormalizeConfiguredSigner(
Object? value) → CrossmintJsonMap? -
crossmintNormalizeMap(
Map< Object?, Object?> value) → CrossmintJsonMap -
crossmintOutputSignature(
CrossmintJsonMap raw) → String? -
crossmintPendingApprovalMessage(
CrossmintJsonMap pendingApproval) → String -
crossmintPendingApprovals(
CrossmintJsonMap raw) → List< CrossmintJsonMap> -
crossmintPendingSignerLocator(
CrossmintJsonMap pendingApproval) → String -
crossmintPendingSignerOperation(
CrossmintWalletSigner signer, String chain) → CrossmintPendingSignerOperation? -
Returns the pending operation blocking a signer's approval on the given
chain, or null if none. Mirrors
getPendingSignerOperationin the JS SDK: Solana/Stellar surface pending transactions viasigner.raw['transaction']; EVM chains surface pending per-chain signatures viasigner.raw['chains'][chain]. -
crossmintPoll<
T extends Object> ({required Future< T?> action(int attempt), required Object onTimeout(), CrossmintPollingConfig config = const CrossmintPollingConfig()}) → Future<T> -
Polls
actionup toconfig.maxAttemptstimes with exponential backoff. -
crossmintReadSignerLocator(
CrossmintJsonMap configSigner) → String? -
crossmintRecoverySignerLocator(
CrossmintWallet wallet) → String? -
crossmintRequireMap(
Object? value, String label) → CrossmintJsonMap -
crossmintRequireString(
Object? value, String label) → String -
crossmintRetrievalProcedure(
CrossmintCredentialsClient client) → CrossmintCredentialRetrievalProcedure -
crossmintSignerBridgeUriForEnvironment(
CrossmintEnvironment environment) → Uri -
crossmintSignerConfigLocator(
CrossmintSignerConfig signer) → String? -
crossmintStatusOf(
CrossmintJsonMap raw) → String? -
crossmintTokenLocator(
String token, {required String chain}) → String -
crossmintTypeFromLocator(
String locator) → String -
crossmintValidatePasskeySigners(
CrossmintWalletCreateRequest request) → void - Validates that any passkey signers in a wallet creation request have a usable signing implementation (callbacks or, in the future, native platform support).
-
crossmintWalletJsonValue(
Object? value) → Object? -
decryptSymmetricCredential(
CrossmintEncryptedVerifiableCredential credential, Uint8List secretKey) → CrossmintVerifiableCredential - Decrypts an AES-256-GCM encrypted Verifiable Credential.
-
getCredentialNFTFromLocator(
String locator, {CrossmintCredentialCollectionProvider? collectionProvider, Future< Object?> metadataLoader(CrossmintCredentialLocator locator)?}) → Future<CrossmintCredentialNftLookupResult> -
getCredentialNfts(
CrossmintVcChain chain, String wallet, {required CrossmintWalletCredentialNftProvider walletNftsProvider, required CrossmintCredentialCollectionProvider collectionProvider, CrossmintCredentialFilter filter = const CrossmintCredentialFilter()}) → Future< List< CrossmintCredentialsCollection> > -
ipfsRetrievalProcedure(
{CrossmintCredentialDocumentLoader? documentLoader}) → CrossmintCredentialRetrievalProcedure -
isCredentialType(
Object? value) → bool -
isEncryptedVerifiableCredential(
Object? value) → bool -
isVcChain(
String chain) → bool -
isVerifiableCredential(
Object? value) → bool -
parseCheckoutEvent(
String rawMessage) → ({Map< String, Object?> data, String? event}) -
Parses a raw JSON message string from the WebView into event name + data.
Returns
(event: null, data: {})for malformed payloads. -
parseCredentialLocator(
String locator) → CrossmintCredentialLocator -
recoverEthereumAddress(
Uint8List messageHash, Uint8List signature) → String? - Recovers an Ethereum address from a secp256k1 signature and message hash.
-
resolveCheckoutBaseUrl(
{required String apiKey}) → String -
Resolves the Crossmint hosted-page base URL from the
apiKey. -
showCrossmintEmailOtpDialog(
{required BuildContext context, required CrossmintWalletOtpController otpController, bool barrierDismissible = false, VoidCallback? onDismissed}) → Future< void> - Shows the email OTP dialog imperatively.
-
showCrossmintPhoneOtpDialog(
{required BuildContext context, required CrossmintWalletOtpController otpController, bool barrierDismissible = false, VoidCallback? onDismissed}) → Future< void> - Shows the phone OTP dialog imperatively.
-
tryParseCredentialType(
Object? value) → CrossmintCredentialType? -
tryParseEncryptedVerifiableCredential(
Object? value) → CrossmintEncryptedVerifiableCredential? -
tryParseVcIssuer(
Object? value) → CrossmintVcIssuer? -
tryParseVcNft(
Object? value) → CrossmintVcNft? -
tryParseVerifiableCredential(
Object? value) → CrossmintVerifiableCredential? -
verifyCredential(
CrossmintVerifiableCredential credential, {CrossmintCredentialProofVerifier? proofVerifier, CrossmintCredentialRevocationChecker? revocationChecker, DateTime? now}) → Future< CrossmintCredentialVerificationResult> -
verifyEip712Proof(
CrossmintVerifiableCredential credential) → bool - Backward-compatible boolean wrapper for verifyEip712ProofDetailed.
-
verifyEip712ProofDetailed(
CrossmintVerifiableCredential credential) → Eip712VerificationResult - Verifies an EIP-712 typed data signature on a Verifiable Credential.
Typedefs
- CrossmintCheckoutLoadingBuilder = Widget Function(BuildContext context)
- Builder signature for the overlay rendered on top of the hosted checkout WebView while the hosted page is loading. Consumers can supply a custom builder via CrossmintEmbeddedCheckout.loadingBuilder to swap the default Material spinner for their own design-system loading state (Cupertino, fluent_ui, a custom animation, etc.).
-
CrossmintCredentialCollectionProvider
= Future<
CrossmintCredentialsCollection?> Function(CrossmintVcChain chain, String contractAddress) -
CrossmintCredentialDocumentLoader
= Future<
Object?> Function(Uri retrievalUri) -
CrossmintCredentialProofVerifier
= FutureOr<
bool> Function(CrossmintVerifiableCredential credential) -
CrossmintCredentialRevocationChecker
= FutureOr<
bool> Function(CrossmintVcNft nft) - CrossmintExportPrivateKeyButtonBuilder = Widget Function(BuildContext context, {required bool isLoading, required VoidCallback? onExport})
-
Builder signature for the visual of CrossmintExportPrivateKeyButton.
The widget owns the loading state and the eligibility check; the builder
receives
isLoadingandonExportso the consumer can render any tap target that fits their design system.onExportisnullwhile the export is in flight so a consumer button (e.g.ElevatedButton) is automatically disabled without a separate mounted check. -
CrossmintExternalWalletSignCallback
= Future<
String> Function(String payload) - Callback signature for user-owned external-wallet signers.
-
CrossmintJsonMap
= Map<
String, Object?> - CrossmintNftItemBuilder = Widget Function(BuildContext context, CrossmintNftRecord nft, int index, {VoidCallback? onTap})
-
Builder signature for a single NFT card rendered inside
CrossmintNftCollectionView. Receives the build context, the NFT record,
the index inside the CrossmintNftCollectionView.nfts list, and an
onTapcallback that forwards to CrossmintNftCollectionView.onNftTap when supplied. Consumers can use the callback to wire their own card widget up to the collection view's tap handling without having to re-implement the list iteration. - CrossmintOtpPromptBuilder = Widget Function(BuildContext context, CrossmintWalletOtpController otpController, Widget child)
- Builds a widget that owns the OTP signer prompt UI for the wallet provider.
- CrossmintOtpRejectCallback = void Function([Object? error])
- Called to cancel a pending OTP challenge, optionally with an error cause.
-
CrossmintOtpSendCallback
= Future<
void> Function() - Called by non-custodial signers to (re-)send an OTP to the user.
-
CrossmintOtpVerifyCallback
= Future<
void> Function(String otp) - Called by non-custodial signers to verify the OTP the user entered.
- CrossmintPaymentMethodManagementLoadingBuilder = Widget Function(BuildContext context)
-
Builder signature for the overlay rendered on top of the hosted
payment-method-management WebView while the hosted page is loading.
Consumers can supply a custom builder via
CrossmintPaymentMethodManagement.loadingBuilder to swap the default
Material spinner for their own design-system loading state. Mirrors the
CrossmintCheckoutLoadingBuilder pattern exposed by
CrossmintEmbeddedCheckout. -
CrossmintSignerAuthRequiredCallback
= Future<
void> Function(String signerType, String signerLocator, bool needsAuth, CrossmintOtpSendCallback sendOtp, CrossmintOtpVerifyCallback verifyOtp, CrossmintOtpRejectCallback reject) - Callback fired when a non-custodial signer needs the user to authenticate.
- CrossmintTransactionDetails = CrossmintTransactionRecord
- CrossmintTransactionSummary = CrossmintTransactionRecord
-
CrossmintVcDocumentLoader
= Future<
Object?> Function(Uri uri) - CrossmintWalletAuthRequiredCallback = CrossmintSignerAuthRequiredCallback
-
CrossmintWalletChallengeSigner
= Future<
String> Function(String wallet, String challengePayload) - CrossmintWalletConsumerBuilder = Widget Function(BuildContext context, CrossmintWalletContextData data)
-
CrossmintWalletCredentialNftProvider
= Future<
List< Function(CrossmintVcChain chain, String wallet)CrossmintVcNft> > - CrossmintWalletGateBuilder = Widget Function(BuildContext context, CrossmintWalletContextData data)
- CrossmintWalletSignature = CrossmintSignatureRecord
- CrossmintWalletStatusWidgetBuilder = Widget Function(BuildContext context, CrossmintWalletContextData data)
- HiddenSignerBridgeMessageListener = void Function(CrossmintJsonMap message)
- HiddenSignerDispatchScriptBuilder = String Function(String payloadJson)
Exceptions / Errors
- CrossmintAuthException
- Thrown by authentication flows — OTP failures, OAuth callback errors, session restore issues, JWT expiry, logout failures.
- CrossmintAuthRejectedException
- Thrown when the user cancels an OTP challenge (via CrossmintWalletOtpController.reject or equivalent).
- CrossmintConfigurationException
- Thrown when the client is configured incorrectly — missing API key, invalid base URL, incompatible runtime overrides, etc.
- CrossmintCredentialsException
- Thrown by verifiable-credentials operations — malformed credential documents, verification failures, locator resolution errors.
- CrossmintDeserializationException
- Thrown when a JSON payload from the Crossmint API is missing a required field, contains the wrong type for a field, or otherwise cannot be parsed into a typed model. Carries the entity being parsed and the offending field so consumer code can react programmatically instead of pattern matching on the message string.
- CrossmintException
- Base class for every exception the Crossmint SDK throws.
- CrossmintOrdersException
- Thrown by checkout / order operations — invalid line items, payment method mismatches, order lookup failures.
- CrossmintSignerException
- Thrown by signer operations — missing host, rejected OTP, unsupported export, missing passkey callback, upstream signer-service errors.
- CrossmintTokensException
- Thrown by token-related operations — balance lookup failures, missing token metadata.
- CrossmintUsersException
- Thrown by user-profile operations — user lookup failures, profile update errors.
- CrossmintWalletException
- Thrown by wallet operations — lookup failures, unsupported chain, missing wallet, malformed transaction payloads.