Flutter连接管理插件darttonconnect_plus的使用
Flutter连接管理插件darttonconnect_plus的使用
本文将详细介绍如何在Flutter项目中使用darttonconnect_plus
插件来实现与TON钱包的连接和交易功能。
安装
首先,在你的Flutter项目的pubspec.yaml
文件中添加依赖:
dependencies:
darttonconnect_plus: ^1.0.1
然后运行以下命令以安装依赖:
$ flutter pub get
配置
创建一个JSON格式的manifest文件,用于描述你的应用信息。这些信息将在用户连接钱包时显示。
示例manifest文件内容如下:
{
"url": "<app-url>", // 必填项:应用的URL
"name": "<app-name>", // 必填项:应用名称
"iconUrl": "<app-icon-url>", // 必填项:应用图标URL
"termsOfUseUrl": "<terms-of-use-url>", // 可选项:隐私政策URL
"privacyPolicyUrl": "<privacy-policy-url>"// 可选项:服务条款URL
}
确保该文件可以通过其URL访问。
初始化
在Flutter代码中初始化TonConnectManager
并传入manifest文件的URL。
import 'package:darttonconnect_plus/darttonconnect_plus.dart';
void main() {
var tonManager = TonConnectManager(
'https://gist.githubusercontent.com/romanovichim/e81d599a6f3798bb9f74ab1970a8b376/raw/43e00b0abc824ef272ac6d0f8083d21456602adf/gistfiletest.txt',
);
// 订阅事件流
tonManager.messagesStream.listen((TonPaymentStatus status) {
print('接收到事件: $status');
});
}
处理事件
TonConnectManager
会通过事件流发送各种状态更新。以下是可能的状态及其含义:
-
TonPaymentStatus.Wallets_loaded
支持的TON钱包列表已加载。此时可以提示用户选择钱包进行连接。 -
TonPaymentStatus.UniversalLink_generated
用户选择了特定的钱包,生成了连接链接。 -
TonPaymentStatus.Connected
选定的钱包已成功连接到应用。此时可以发起交易请求。 -
TonPaymentStatus.Transaction_prepaired
交易请求已通过TON HTTP桥发送。用户需要打开钱包确认交易。 -
TonPaymentStatus.Transaction_sent
交易已成功添加到区块链。 -
TonPaymentStatus.Transaction_error_or_rejected
用户拒绝了交易或连接出现问题。 -
TonPaymentStatus.Disconnected
钱包已从应用中断开连接。
发起交易
darttonconnect_plus
提供了两种方式来发起交易:简单接口和自定义接口。
简单接口
void sendTrx({
required String address, // 目标地址
required int amount, // 转账金额(单位为微吨)
String? comment, // 交易备注
int? validUntill, // 交易有效期(秒)
}) async {
await tonManager.sendTrx(
address: address,
amount: amount,
comment: comment,
validUntill: validUntill,
);
}
自定义接口
void sendTrxRaw({required Map<String, dynamic> transaction}) async {
await tonManager.sendTrxRaw(transaction: transaction);
}
示例代码
以下是一个完整的示例代码,展示了如何使用darttonconnect_plus
插件完成基本的连接和交易操作。
import 'package:flutter/material.dart';
import 'package:darttonconnect_plus/darttonconnect_plus.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
late TonConnectManager tonManager;
[@override](/user/override)
void initState() {
super.initState();
tonManager = TonConnectManager(
'https://gist.githubusercontent.com/romanovichim/e81d599a6f3798bb9f74ab1970a8b376/raw/43e00b0abc824ef272ac6d0f8083d21456602adf/gistfiletest.txt',
);
tonManager.messagesStream.listen((TonPaymentStatus status) {
print('接收到事件: $status');
});
}
void _connectWallet() async {
try {
await tonManager.connect();
print('钱包已连接');
} catch (e) {
print('连接失败: $e');
}
}
void _sendTransaction() async {
try {
await tonManager.sendTrx(
address: 'EQB9HrZ...KQ', // 示例目标地址
amount: 1000000, // 示例转账金额(微吨)
comment: '测试交易',
);
print('交易已发送');
} catch (e) {
print('交易失败: $e');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('TON Connect 示例')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _connectWallet,
child: Text('连接钱包'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _sendTransaction,
child: Text('发送交易'),
),
],
),
),
);
}
}
更多关于Flutter连接管理插件darttonconnect_plus的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter连接管理插件darttonconnect_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
darttonconnect_plus
是一个用于在 Flutter 应用中连接和管理 TON (The Open Network) 钱包的插件。它允许开发者轻松地与 TON 区块链进行交互,包括发送交易、获取余额、管理钱包等操作。
以下是如何在 Flutter 项目中使用 darttonconnect_plus
的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 darttonconnect_plus
依赖:
dependencies:
flutter:
sdk: flutter
darttonconnect_plus: ^0.1.0 # 请使用最新版本
然后运行 flutter pub get
以安装依赖。
2. 初始化 TON Connect
在你的 Dart 文件中,导入 darttonconnect_plus
并初始化 TON Connect:
import 'package:darttonconnect_plus/darttonconnect_plus.dart';
void main() async {
// 初始化 TON Connect
final tonConnect = TonConnect();
// 连接到钱包
final connectionUrl = await tonConnect.connect();
print('Connect URL: $connectionUrl');
// 监听连接状态
tonConnect.onStatusChange((walletInfo) {
print('Wallet connected: ${walletInfo.account.address}');
});
}
3. 连接到钱包
tonConnect.connect()
方法会生成一个连接 URL,你可以将这个 URL 展示给用户,用户可以通过 TON 钱包应用(如 Tonkeeper)扫描该 URL 来连接钱包。
final connectionUrl = await tonConnect.connect();
print('Connect URL: $connectionUrl');
4. 监听连接状态
你可以通过 onStatusChange
方法来监听钱包的连接状态。当用户成功连接钱包时,回调函数会被触发。
tonConnect.onStatusChange((walletInfo) {
print('Wallet connected: ${walletInfo.account.address}');
});
5. 发送交易
一旦钱包连接成功,你可以使用 sendTransaction
方法来发送交易。
final transaction = {
'to': 'EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HAn4bpAOg8xqB2N',
'value': '1000000000', // 1 TON
'payload': 'Hello, TON!',
};
final result = await tonConnect.sendTransaction(transaction);
print('Transaction result: $result');
6. 断开连接
你可以使用 disconnect
方法来断开与钱包的连接。
await tonConnect.disconnect();
print('Disconnected from wallet');
7. 获取钱包信息
你可以通过 getWalletInfo
方法来获取当前连接的钱包信息。
final walletInfo = await tonConnect.getWalletInfo();
print('Wallet info: $walletInfo');
8. 处理错误
在使用过程中,可能会遇到各种错误。你可以通过 try-catch
块来捕获并处理这些错误。
try {
final transaction = {
'to': 'EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HAn4bpAOg8xqB2N',
'value': '1000000000', // 1 TON
'payload': 'Hello, TON!',
};
final result = await tonConnect.sendTransaction(transaction);
print('Transaction result: $result');
} catch (e) {
print('Error: $e');
}