Quick Start
main.dart
Copy
Ask AI
// Initialize Para
final para = Para.fromConfig(
config: ParaConfig(
apiKey: 'YOUR_API_KEY',
environment: Environment.beta,
),
appScheme: 'yourapp',
);
// Prepare a web authentication session for browser-based auth flows
final webAuthSession = FlutterWebAuthSession(
callbackUrlScheme: 'yourapp',
);
// Authenticate user
final authState = await para.initiateAuthFlow(
auth: Auth.email('user@example.com'),
);
switch (authState.stage) {
case AuthStage.login:
// One‑Click Login when a loginUrl is provided
final url = authState.loginUrl;
if (url?.isNotEmpty == true) {
await para.presentAuthUrl(
url: url!,
webAuthenticationSession: webAuthSession,
);
await para.waitForLogin();
await para.touchSession();
await para.fetchWallets();
break;
}
// Fallback to other login methods
await para.handleLogin(
authState: authState,
webAuthenticationSession: webAuthSession,
);
break;
case AuthStage.verify:
// Show OTP UI, then continue the flow
break;
case AuthStage.signup:
// Call handleSignup if passkeys/passwords are enabled
break;
}
Sign Transactions
transaction_handler.dart
Copy
Ask AI
// Get wallets
final wallets = await para.fetchWallets();
final evmWallet = wallets.firstWhere((w) => w.type == WalletType.evm && w.id != null);
final solanaWallet = wallets.firstWhere((w) => w.type == WalletType.solana && w.id != null);
// EVM transaction
final evmTx = EVMTransaction(
to: '0x742d35Cc6634C0532925a3b844Bc9e7595f6E2c0',
value: '1000000000000000', // 0.001 ETH in wei
chainId: '11155111',
type: 2, // EIP-1559
);
final evmResult = await para.signTransaction(
walletId: evmWallet.id!,
transaction: evmTx.toJson(),
chainId: '11155111',
rpcUrl: 'https://rpc.ankr.com/eth_sepolia',
);
if (evmResult is SuccessfulSignatureResult) {
final signedTx = evmResult.signedTransaction;
// Broadcast signedTx using your RPC client
}
// Solana message signing
final solanaResult = await para.signMessage(
walletId: solanaWallet.id!,
message: 'Hello, Solana!',
);
if (solanaResult is SuccessfulSignatureResult) {
final signature = solanaResult.signedTransaction; // Base64 signature string
}