Wallet Connect client in Dart.
Wallet Connect client in dart highly inspired from wallet-connect-kotlin by Trust Wallet.
import 'package:wallet_connect/wallet_connect.dart';
final wcClient = WCClient(
onConnect: () {
// Respond to connect callback
},
onDisconnect: (code, reason) {
// Respond to disconnect callback
},
onFailure: (error) {
// Respond to connection failure callback
},
onSessionRequest: (id, peerMeta) {
// Respond to connection request callback
},
onEthSign: (id, message) {
// Respond to personal_sign or eth_sign or eth_signTypedData request callback
},
onEthSendTransaction: (id, tx) {
// Respond to eth_sendTransaction request callback
},
onEthSignTransaction: (id, tx) {
// Respond to eth_signTransaction request callback
},
);
final session = WCSession.from(wcUri);
final peerMeta = WCPeerMeta(
name: 'Example Wallet',
url: 'https://example.wallet',
description: 'Example Wallet',
icons: [],
);
wcClient.connectNewSession(session: session, peerMeta: peerMeta);
wcClient.connectFromSessionStore(sessionStore);
wcClient.approveSession(
accounts: [], // account addresses
chainId: 1, // chain id
);
wcClient.rejectSession();
final sessionStore = wcClient.sessionStore;
wcClient.approveRequest<String>(
id: id,
result: signedDataAsHex,
);
wcClient.approveRequest<String>(
id: id,
result: transactionHash,
);
wcClient.approveRequest<String>(
id: id,
result: signedDataAsHex,
);
wcClient.rejectRequest(id: id);
wcClient.disconnect();
wcClient.killSession();