portal_flutter
Flutter SDK for Portal — Stablecoin wallet infrastructure.
This is a federated plugin. Platform implementations live in the
portal_flutter_android
and portal_flutter_ios
packages and are pulled in automatically when you depend on
portal_flutter.
Installation
dependencies:
portal_flutter: ^0.1.0-alpha.8
Request tracing
Every request the Portal SDKs make carries an X-Portal-Trace-Id header so a
wallet operation can be correlated with Portal's backend logs. The native SDKs
generate one automatically, and multi-step flows share a single ID end-to-end.
To supply your own — a checkout ID, a support ticket reference, anything you
already track — pass traceId to any of the methods that accept it:
final traceId = generateTraceId(); // lowercase UUID v4
final list = await portal.evmAccountType.buildAuthorizationList(
chainId: 'eip155:11155111',
traceId: traceId,
);
final signature = await portal.rawSign(
chainId: 'eip155:11155111',
message: list.data.hash,
traceId: traceId,
);
await portal.evmAccountType.build7702UpgradeTx(
chainId: 'eip155:11155111',
signature: signature,
traceId: traceId,
);
Passing the same value to each step correlates them as one operation. Omit
traceId and the native SDK generates one per request, exactly as before.
portalTraceIdHeader is exported if you need the header name itself.
Where traceId is accepted
sendAsset, request, signMessage, signTypedData, sendTransaction,
rawSign, buildEip155Transaction, buildSolanaTransaction,
updateShareStatus, and evmAccountType.buildAuthorizationList /
evmAccountType.build7702UpgradeTx.
Where it is not
These methods take no traceId because the native iOS and Android SDKs do not
accept one. Requests are still traced — the SDK just owns the ID.
- MPC operations —
createWallet,backupWallet,recoverWallet,ejectPrivateKeys, andevmAccountType.upgradeTo7702each generate one trace ID internally and share it across every underlying request. To control the ID for a 7702 upgrade, drive it manually with the three-step flow above. evmAccountType.getStatus— routed through a native Portal-level wrapper that takes no trace ID.- Delegations, Blockaid / Hypernative scans, LiFi and 0x trading, yield,
getAssets/getBalances/getTransactions/getNftAssets/evaluateTransaction— no trace ID support in the native SDKs yet.
Trace IDs are write-only: there is no API to read back an ID the native SDK generated, so keep the value you pass in if you need it later. Blank strings are treated as absent.
Platform difference
Android attaches the header only to Portal-owned hosts, while iOS attaches it to every request the SDK builds, including third-party RPC providers. This is native SDK behavior and is not changed by the Flutter layer.
Resources
Libraries
- portal_flutter
- Flutter SDK for Portal - MPC wallet infrastructure