WalletConnect is an open source protocol for connecting decentralised applications to mobile wallets with QR code scanning or deep linking. A user can interact securely with any Dapp from their mobile phone, making WalletConnect wallets a safer choice compared to desktop or browser extension wallets.
This package provides UX for dApp to seamlessly connect to a wallet app. On iOS list of wallet apps is provided for user to select from, on Android there is one click connect. QR code option is also provided.
The package uses walletconnect-dart package for underlying WalletConnect communication.
Once installed, you can simply connect your application to a wallet.
Initiate connection - show QR code modal
// Create a connector
final qrCodeModal = WalletConnectQrCodeModal(
connector: WalletConnect(
bridge: 'https://bridge.walletconnect.org',
clientMeta: const PeerMeta( // <-- Meta data of your app appearing in the wallet when connecting
name: 'QRCodeModalExampleApp',
description: 'WalletConnect Developer App',
url: 'https://walletconnect.org',
icons: [
'https://gblobscdn.gitbook.com/spaces%2F-LJJeCjcLrr53DcT1Ml7%2Favatar.png?alt=media'
],
),
),
);
// Subscribe to events
qrCodeModal.registerListeners(
onConnect: (session) => print('Connected: $session'),
onSessionUpdate: (response) => print('Session updated: $response'),
onDisconnect: () => print('Disconnected'),
);
// Create QR code modal and connect to a wallet
await qrCodeModal.connect(context, chainId: 2);
Send transaction
Example of Ethereum transaction:
final provider = EthereumWalletConnectProvider(connector);
final ethereum = Web3Client('https://ropsten.infura.io/', Client());
final sender = EthereumAddress.fromHex(session.accounts[0]);
final transaction = Transaction(
to: sender,
from: sender,
gasPrice: EtherAmount.inWei(BigInt.one),
maxGas: 100000,
value: EtherAmount.fromUnitAndValue(EtherUnit.finney, 1),
);
final credentials = WalletConnectEthereumCredentials(provider: provider);
// Send the transaction
final txBytes = await ethereum.sendTransaction(credentials, transaction);
Kill session
await qrCodeModal.killSession();
The aim of the example app is to demonstrate simple transaction using QR code modal. The connected wallet has to be configured for Ethereum (Ropsten) or Algorand test network with at least 0.001 tokens available (plus fee amount for the transaction). After connecting to the wallet the app would try to transfer 0.001 Eth/Algo from wallet account to the same account (you should see some fee being deducted as well).
Please see CHANGELOG for more information on what has changed recently.
The MIT License (MIT). Please see License File for more information.