Flutter集成Xelis服务插件xelis_dart_sdk的使用
Flutter 集成 Xelis 服务插件 xelis_dart_sdk 的使用
特性
JSON-RPC 方法
守护进程(Daemon)
- getVersion
- getInfo
- getHeight
- getTopoHeight
- getStableHeight
- getStableTopoHeight
- getBlockTemplate
- getBlockAtTopoHeight
- getBlocksAtHeight
- getBlockByHash
- getTopBlock
- getNonce
- getNonceAtTopoHeight
- getBalance
- getStableBalance
- getBalanceAtTopoHeight
- hasBalance
- getAsset
- getAssets
- countAssets
- countTransactions
- getTips
- p2pStatus
- getDagOrder
- submitTransaction
- getTransaction
- getTransactions
- getMempool
- submitBlock
- getBlocksRangeByTopoHeight
- getBlocksRangeByHeight
- getAccounts
- countAccounts
- getPeers
- getAccountHistory
- getAccountAssets
- hasNonce
- isTxExecutedInBlock
- getDevFeeThresholds
- getSizeOnDisk
- getMempoolCache
- isAccountRegistered
- getAccountRegistrationTopoheight
- getTransactionExecutor
- getDifficulty
- validateAddress
- splitAddress
- extractKeyFromAddress
- getMinerWork
- getHardForks
- makeIntegratedAddress
- decryptExtraData
- getMultisig
- getMultisigAtTopoheight
- hasMultisig
- hasMultisigAtTopoheight
- countContracts
- getEstimatedFeeRates
- getContractOutputs
- getContractModule
- getContractData
钱包(Wallet)
- getVersion
- getNetwork
- getNonce
- getTopoHeight
- getAddress
- splitAddress
- rescan
- getBalance
- hasBalance
- getTrackedAssets
- getAssetPrecision
- getTransaction
- buildTransaction
- buildTransactionOffline
- buildUnsignedTransaction
- finalizeUnsignedTransaction
- signUnsignedTransaction
- listTransactions
- isOnline
- signData
- estimateFees
- estimateExtraDataSize
- clearTxCache
- decryptExtraData
- decryptCiphertext
- getAssets
- getAsset
- dumpTransaction
WebSocket 事件
守护进程(Daemon)
- newBlock
- blockOrdered
- blockOrphaned
- stableHeightChanged
- transactionAddedInMempool
- transactionExecuted
- transactionOrphaned
- transactionSCResult
- newAsset
- peerConnected
- peerDisconnected
- peerPeerListUpdated
- peerStateUpdated
- peerPeerDisconnected
钱包(Wallet)
- newTopoheight
- newAsset
- newTransaction
- balanceChanged
- rescan
- Online
- Offline
- historySynced
使用
使用 DaemonClient
如下所示与 XELIS 节点交互。
import 'package:xelis_dart_sdk/xelis_dart_sdk.dart';
Future<void> main() async {
try {
// 创建一个守护进程客户端存储库,用于与 Xelis 节点交互。
final daemonRepository = DaemonClient(
endPoint: localhostAddress,
secureWebSocket: false,
);
// 必须首先初始化连接。
daemonRepository.connect();
// 您可以使用存储库向守护进程发出请求。
var res = await daemonRepository.getInfo();
print('结果: $res');
// 另一个带有需要参数的 RPC 请求示例。
res = await daemonRepository.getBlockAtTopoHeight(
GetBlockAtTopoHeightParams(topoHeight: 1750, includeTxs: true),
);
print('结果: $res');
// 您也可以使用存储库来监听事件。
daemonRepository
// 监听新块事件。
..onNewBlock((block) {
print('新块: $block');
})
// 您可以为同一个事件添加多个回调。它们将按添加顺序调用。
..onNewBlock((block) {
print('另一个新块回调: $block');
})
// 这里还有其他事件。
..onBlockOrdered((block) {
print('区块已排序: $block');
})
..onTransactionAddedInMempool((tx) {
print('交易已添加到内存池: $tx');
})
..onTransactionExecuted((tx) {
print('交易已执行: $tx');
})
// 您可以从事件中取消订阅。
// 这将移除该事件的所有回调。
..unsubscribeFromNewBlock()
// 您可以一次性从所有事件中取消订阅。
..unsubscribeFromAll()
// 您还可以为连接事件添加回调...
..onOpen(() {
print('通道已打开');
})
..onClose(() {
print('通道已关闭');
})
..onError((error) {
print('通道错误: $error');
});
} catch (e) {
print(e);
}
// exit(0);
}
示例代码
import 'package:xelis_dart_sdk/xelis_dart_sdk.dart';
Future<void> main() async {
try {
// 创建一个守护进程客户端存储库,用于与 Xelis 节点交互。
final daemonClient = DaemonClient(
endPoint: localhostAddress,
secureWebSocket: false,
);
// 必须首先初始化连接。
daemonClient.connect();
// 您可以使用存储库向守护进程发出请求。
final res = await daemonClient.getInfo();
print('结果: $res');
// 您也可以使用存储库来监听事件。
daemonClient
// 监听新块事件。
..onNewBlock((block) {
print('新块: $block');
})
// 您可以为同一个事件添加多个回调。它们将按添加顺序调用。
..onNewBlock((block) {
print('另一个新块回调: $block');
})
// 这里还有其他事件。
..onBlockOrdered((block) {
print('区块已排序: $block');
})
..onTransactionAddedInMempool((tx) {
print('交易已添加到内存池: $tx');
})
..onTransactionExecuted((tx) {
print('交易已执行: $tx');
})
// 您可以从事件中取消订阅。
// 这将移除该事件的所有回调。
..unsubscribeFromNewBlock()
// 您可以一次性从所有事件中取消订阅。
..unsubscribeFromAll()
// 您还可以为连接事件添加回调...
..onOpen(() {
print('通道已打开');
})
..onClose(() {
print('通道已关闭');
})
..onError((error) {
print('通道错误: $error');
});
} catch (e) {
print(e);
}
// exit(0);
}
更多关于Flutter集成Xelis服务插件xelis_dart_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter集成Xelis服务插件xelis_dart_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个Flutter项目中集成并使用Xelis服务插件xelis_dart_sdk
的示例代码。这个示例将展示如何配置Flutter项目、添加依赖项以及使用Xelis服务插件的基本功能。
1. 配置Flutter项目
首先,确保你已经创建了一个Flutter项目。如果还没有,可以使用以下命令创建一个新的Flutter项目:
flutter create my_xelis_app
cd my_xelis_app
2. 添加依赖项
在pubspec.yaml
文件中添加xelis_dart_sdk
依赖项:
dependencies:
flutter:
sdk: flutter
xelis_dart_sdk: ^latest_version # 请替换为实际的最新版本号
然后运行flutter pub get
来下载依赖项。
3. 配置Android和iOS项目
确保在Android和iOS项目中正确配置了必要的权限和设置,以便Xelis服务插件能够正常工作。具体配置步骤可以参考xelis_dart_sdk
的官方文档。
4. 使用Xelis服务插件
以下是一个简单的示例,展示如何在Flutter应用中初始化并使用Xelis服务插件:
import 'package:flutter/material.dart';
import 'package:xelis_dart_sdk/xelis_dart_sdk.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Xelis Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: XelisExampleScreen(),
);
}
}
class XelisExampleScreen extends StatefulWidget {
@override
_XelisExampleScreenState createState() => _XelisExampleScreenState();
}
class _XelisExampleScreenState extends State<XelisExampleScreen> {
late XelisClient xelisClient;
@override
void initState() {
super.initState();
// 初始化XelisClient,替换为你的实际配置
xelisClient = XelisClient(
apiKey: 'YOUR_API_KEY', // 替换为你的API Key
secret: 'YOUR_SECRET', // 替换为你的Secret
endpoint: 'YOUR_ENDPOINT', // 替换为你的API Endpoint
);
// 示例:调用Xelis服务(这里以某个假设的服务为例)
_fetchData();
}
Future<void> _fetchData() async {
try {
// 假设我们有一个名为getData的服务
var response = await xelisClient.getData(parameters: {
'param1': 'value1',
'param2': 'value2',
});
// 处理响应数据
print('Response data: ${response.data}');
} catch (error) {
// 处理错误
print('Error: $error');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Xelis Example'),
),
body: Center(
child: Text('Checking data from Xelis service...'),
),
);
}
}
注意事项
- API Key和Secret:确保你使用的是有效的API Key和Secret,并且它们有适当的权限来访问你需要的Xelis服务。
- 错误处理:在实际应用中,应该更详细地处理错误,比如显示用户友好的错误消息或进行重试逻辑。
- 服务调用:上述示例中的
getData
方法是一个假设的方法,你需要根据Xelis服务插件提供的实际API来调用相应的服务。
结论
上述代码展示了如何在Flutter项目中集成和使用Xelis服务插件xelis_dart_sdk
。请根据你的实际需求调整代码,并参考xelis_dart_sdk
的官方文档以获取更多信息和高级用法。