Search packages, repositories and app categories

walletconnect_dart cover
Package detailsv0.0.11

walletconnect_dart

Open protocol for connecting decentralised applications to mobile wallets with QR code scanning or deep linking.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
773
Likes
115
Pub points
130

Install package

flutter pub add walletconnect_dart

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

WalletConnect Dart is a lightweight SDK enabling decentralized applications to securely connect to mobile wallets via QR code scanning or deep linking. It supports cross-platform integration across Android, iOS, Web, macOS, Windows, and Linux, facilitating seamless blockchain interactions. Built on the open WalletConnect protocol, it ensures encrypted communication between dApps and wallets without exposing private keys. The package simplifies wallet pairing, session management, and transaction signing in Flutter apps. Ideal for developers building crypto-native applications requiring secure, user-friendly wallet connectivity.

Use cases

  • Connecting dApps to mobile wallets
  • Enabling blockchain transactions
  • Supporting multi-platform crypto apps
  • Facilitating secure wallet pairing
  • Implementing QR code-based authentication
  • Integrating with Ethereum and other blockchains

Key features

  • Cross-platform support
  • QR code and deep link pairing
  • Encrypted session communication
  • Secure transaction signing
  • Easy integration with Flutter
  • Lightweight and modular design

Suitable for

  • Flutter developers building dApps
  • Crypto wallet integrations
  • Web3 application creators
  • Blockchain project teams
  • Mobile-first crypto platforms
  • Decentralized finance (DeFi) apps

Considerations

  • Requires compatible mobile wallets
  • Needs proper error handling for connection failures
  • Depends on external wallet availability
  • May require additional UI for QR scanning
  • Not suitable for non-blockchain use cases
  • Session management must be handled carefully

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

pub.dev Effective Dart Stars Issues MIT License

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.

Introduction

WalletConnect connects mobile & web applications to supported mobile wallets. The WalletConnect session is started by scanning a QR code (desktop) or by clicking an application deep link (mobile).

WalletConnect-Dart-SDK is a community SDK and port of the official WalletConnect-monorepo.

WalletConnect-Dart currently supports:

  • Algorand
  • Ethereum

You can easily add your own network by extending from WalletConnectProvider and implementing the required methods using sendCustomRequest. An example from Binance Smart Chain can be found here. For more information regarding the implementation, check out EthereumWalletConnectProvider and AlgorandWalletConnectProvider.

WalletConnect lets you build:

  • Decentralized web applications and display QR codes with qr_flutter
  • Mobile dApps with deep linking using url_launcher
  • Cross-platform wallets

Once installed, you can simply connect your application to a wallet.

// Create a connector
final connector = WalletConnect(
    bridge: 'https://bridge.walletconnect.org',
    clientMeta: PeerMeta(
      name: 'WalletConnect',
      description: 'WalletConnect Developer App',
      url: 'https://walletconnect.org',
      icons: [
        'https://gblobscdn.gitbook.com/spaces%2F-LJJeCjcLrr53DcT1Ml7%2Favatar.png?alt=media'
      ],
    ),
);

Usage

Dapps

Initiate connection

// Create a connector
final connector = WalletConnect(
    bridge: 'https://bridge.walletconnect.org',
    clientMeta: PeerMeta(
      name: 'WalletConnect',
      description: 'WalletConnect Developer App',
      url: 'https://walletconnect.org',
      icons: [
        'https://gblobscdn.gitbook.com/spaces%2F-LJJeCjcLrr53DcT1Ml7%2Favatar.png?alt=media'
      ],
    ),
);

// Subscribe to events
connector.on('connect', (session) => print(session));
connector.on('session_update', (payload) => print(payload));
connector.on('disconnect', (session) => print(session));

// Create a new session
if (!connector.connected) {
    final session = await connector.createSession(
        chainId: 4160,
        onDisplayUri: (uri) => print(uri),
    );
}

Sign transaction

final sender = Address.fromAlgorandAddress(address: session.accounts[0]);

// Fetch the suggested transaction params
final params = await algorand.getSuggestedTransactionParams();

// Build the transaction
final tx = await (PaymentTransactionBuilder()
  ..sender = sender
  ..noteText = 'Signed with WalletConnect'
  ..amount = Algo.toMicroAlgos(0.0001)
  ..receiver = sender
  ..suggestedParams = params)
    .build();

// Sign the transaction
final signedBytes = await provider.signTransaction(
    tx.toBytes(),
    params: {
    'message': 'Optional description message',
    },
);

// Broadcast the transaction
final txId = await algorand.sendRawTransactions(
    signedBytes,
    waitForConfirmation: true,
);

// Kill the session
connector.killSession();
Wallets

Initiate connection

// Create a connector
final connector = WalletConnect(
    uri: 'wc:8a5e5bdc-a0e4-47...TJRNmhWJmoxdFo6UDk2WlhaOyQ5N0U=',
    clientMeta: PeerMeta(
      name: 'WalletConnect',
      description: 'WalletConnect Developer App',
      url: 'https://walletconnect.org',
      icons: [
        'https://gblobscdn.gitbook.com/spaces%2F-LJJeCjcLrr53DcT1Ml7%2Favatar.png?alt=media'
      ],
    ),
);

// Subscribe to events
connector.on('connect', (session) => print(session));
connector.on('session_request', (payload) => print(payload));
connector.on('disconnect', (session) => print(session));

Manage connection

// Approve session
await connector.approveSession(chainId: 4160, accounts: ['0x4292...931B3']);

// Reject session
await connector.rejectSession(message: 'Optional error message');

// Update session
await connector.updateSession(SessionStatus(chainId: 4000, accounts: ['0x4292...931B3']));

Kill session

await connector.killSession();

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing & Pull Requests

Feel free to send pull requests.

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.

Categories

Dependencies

Dependency list 6 items

Source repository

Projects using this package