Flutter集成Xelis服务插件xelis_dart_sdk的使用

发布于 1周前 作者 bupafengyu 来自 Flutter

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

1 回复

更多关于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...'),
      ),
    );
  }
}

注意事项

  1. API Key和Secret:确保你使用的是有效的API Key和Secret,并且它们有适当的权限来访问你需要的Xelis服务。
  2. 错误处理:在实际应用中,应该更详细地处理错误,比如显示用户友好的错误消息或进行重试逻辑。
  3. 服务调用:上述示例中的getData方法是一个假设的方法,你需要根据Xelis服务插件提供的实际API来调用相应的服务。

结论

上述代码展示了如何在Flutter项目中集成和使用Xelis服务插件xelis_dart_sdk。请根据你的实际需求调整代码,并参考xelis_dart_sdk的官方文档以获取更多信息和高级用法。

回到顶部