如何在Flutter中使用web3modal_flutter包获取钱包地址?
解决web3modal_flutter自动获取已连接钱包地址问题
监听连接回调获取地址
钱包成功连接后,web3modal的onConnect回调会返回包含账户信息的会话对象,直接从会话的accounts列表中取第一个地址即可:final web3Modal = Web3Modal( clientId: '你的Client ID', metadata: const PairingMetadata( name: '你的应用名称', description: '应用描述', url: '你的应用URL', icons: ['你的应用图标URL'], ), ); // 设置连接成功回调 web3Modal.onConnect((session) { final connectedAddress = session.accounts.first; // 将地址存储到变量或状态中,供后续签名使用 print('已连接地址: $connectedAddress'); }); // 触发钱包连接 await web3Modal.connect();获取已激活的会话地址
如果应用重启或需要主动获取当前已连接的钱包地址,可以调用getActiveSession()方法:final activeSession = await web3Modal.getActiveSession(); if (activeSession != null) { final connectedAddress = activeSession.accounts.first; // 使用该地址进行交易签名 }签名交易时使用自动获取的地址
拿到地址后,在构建交易时将from字段指定为该地址,即可完成自动签名:final transaction = Transaction( from: connectedAddress, // 这里用自动获取的地址 to: EthereumAddress.fromHex('目标地址'), value: EtherAmount.fromUnitAndValue(EtherUnit.ether, 0.01), ); // 执行签名 final signedTx = await web3Modal.signTransaction(session, transaction);
内容的提问来源于stack exchange,提问作者Tayyab Chattah
相关产品推荐
相关产品推荐

