Flutter钱包连接插件walletconnect_dart的使用
Flutter钱包连接插件walletconnect_dart的使用
简介
WalletConnect 是一个开源协议,用于通过扫描二维码或深度链接将去中心化应用程序(Dapps)连接到移动钱包。用户可以通过手机安全地与任何 Dapp 互动,使 WalletConnect 钱包比桌面或浏览器扩展钱包更安全。
WalletConnect-Dart-SDK 是官方 WalletConnect-monorepo 的社区 SDK 和移植版本。目前支持以下网络:
- Algorand
- Ethereum
你可以通过扩展 WalletConnectProvider
并实现所需的方法来轻松添加自己的网络。有关实现的更多信息,请参阅 EthereumWalletConnectProvider
和 AlgorandWalletConnectProvider
。
使用方法
安装
你可以在 pubspec.yaml
文件中添加 walletconnect_dart
包:
dependencies:
walletconnect_dart: ^latest-version
注意: walletconnect_dart
要求 Dart >= 2.14.0 并且支持空安全。请查看 pub.dev 获取最新版本。
示例代码
创建连接
import 'package:walletconnect_dart/walletconnect_dart.dart';
void main() async {
// 创建连接器
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'
],
),
);
// 订阅事件
connector.on('connect', (session) => print(session));
connector.on('session_update', (payload) => print(payload));
connector.on('disconnect', (session) => print(session));
// 创建新会话
if (!connector.connected) {
final session = await connector.createSession(
chainId: 4160,
onDisplayUri: (uri) => print(uri),
);
}
}
签名交易
import 'package:walletconnect_dart/walletconnect_dart.dart';
import 'package:algorand_dart/algorand_dart.dart';
void main() async {
// 创建连接器
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'
],
),
);
// 设置默认的 WalletConnect 提供者
connector.setDefaultProvider(AlgorandWCProvider(connector));
// 检查连接是否已建立
final session = await connector.createSession(
chainId: 4160,
onDisplayUri: (uri) => print(uri),
);
final sender = Address.fromAlgorandAddress(address: session.accounts[0]);
// 获取建议的交易参数
final params = await algorand.getSuggestedTransactionParams();
// 构建交易
final transaction = await (PaymentTransactionBuilder()
..sender = sender
..noteText = 'Signed with WalletConnect'
..amount = Algo.toMicroAlgos(0.0001)
..receiver = sender
..suggestedParams = params)
.build();
// 签名交易
final txBytes = Encoder.encodeMessagePack(transaction.toMessagePack());
final signedBytes = await connector.signTransaction(
txBytes,
params: {
'message': 'Optional description message',
},
);
// 广播交易
final txId = await algorand.sendRawTransactions(
signedBytes,
waitForConfirmation: true,
);
print(txId);
// 结束会话
connector.killSession();
}
Algorand 测试网
在测试网中进行测试通常更经济实惠。要切换到 Algorand 测试网,只需更新 AlgodClient
以使用测试网 URL:
final algorand = Algorand(
algodClient: AlgodClient(apiUrl: AlgoExplorer.TESTNET_ALGOD_API_URL),
);
如果你需要测试网上的 Algos,可以使用水龙头:https://bank.testnet.algorand.network/
更多信息
- 变更日志: 请参阅 CHANGELOG 了解最近的更改。
- 贡献和拉取请求: 欢迎发送拉取请求。详情请参阅 CONTRIBUTING。
- 许可证: 本项目采用 MIT 许可证。详情请参阅 LICENSE。
希望这些信息对你有帮助!如果有任何问题或需要进一步的帮助,请随时提问。
更多关于Flutter钱包连接插件walletconnect_dart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html