Flutter EOS交互插件eosdart的使用

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

Flutter EOS交互插件eosdart的使用

eosdart 是一个用于与EOS节点进行交互的库。它可以通过给定的端点和API方法与EOS节点通信。

示例

一个简单的Flutter应用示例,使用eosdart来获取EOS账户信息:

https://github.com/primes-network/sample_flutter_eosdart


### 使用

以下是一个简单的使用示例:

```dart
import 'package:eosdart/eosdart.dart';

void main() async {
  EOSClient client = EOSClient('https://eos.greymass.com', 'v1');

  // 获取EOS节点信息
  await client.getInfo().then((NodeInfo nodeInfo) {
    print(nodeInfo);
  });

  // 获取EOS ABI
  await client.getAbi('eosio.token').then((AbiResp abi) {
    print(abi);
  });

  // 获取原始ABI
  await client.getRawAbi('eosio.token').then((AbiResp abi) {
    print(abi);
  });

  // 获取原始代码和ABI
  await client.getRawCodeAndAbi('eosio.token').then((AbiResp abi) {
    print(abi);
  });

  // 获取EOS区块信息
  await client.getBlock('298674').then((Block block) {
    print(block);
  });

  // 获取账户信息
  await client.getAccount('eosio.token').then((Account account) {
    print(account);
  });

  // 获取账户动作
  await client.getActions('eosio.token', pos: -1, offset: -1).then((Actions actions) {
    print(actions);
  });

  // 获取交易
  await client.getTransaction(
      '83875faeb054ba20b20f392418e3a0002c4bb1c36cc4e3fde15cbd0963da8a15')
      .then((TransactionBlock transaction) {
    print(transaction);
  });

  // 通过公钥获取账户名
  await client.getKeyAccounts('EOS8RWQpzzMi5uFXXXAChi4dHnyxMYKKdAQ3Y3pHQTrvhzGk95LbT')
      .then((AccountNames accountNames) {
    print(accountNames);
  });

  // 获取货币余额
  await client.getCurrencyBalance('parslseed123', 'newdexpocket')
      .then((List<Holding> balance) {
    print(balance);
  });
}

发送交易

以下是如何使用eosdart发送交易的示例:

import 'package:eosdart/eosdart.dart';

void main() async {
  EOSClient client = EOSClient('http://127.0.0.1:8888', 'v1',
      privateKeys: ["5J9b3xMkbvcT6gYv2EpQ8FD4ZBjgypuNKwE1jxkd7Wd1DYzhk88"]);

  List<Authorization> auth = [
    Authorization()
      ..actor = 'bob'
      ..permission = 'active'
  ];

  Map<String, dynamic> data = {
    'from': 'bob',
    'to': 'alice',
    'quantity': '0.0001 SYS',
    'memo': '',
  };

  List<Action> actions = [
    Action()
      ..account = 'eosio.token'
      ..name = 'transfer'
      ..authorization = auth
      ..data = data
  ];

  Transaction transaction = Transaction()..actions = actions;

  // 发送交易
  await client.pushTransaction(transaction, broadcast: true).then((trx) {
    print(trx);
  });
}

安装

要安装eosdart,请在pubspec.yaml文件中添加依赖项:

dependencies:
  eosdart: ^1.0.0

更多关于Flutter EOS交互插件eosdart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter EOS交互插件eosdart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter中使用eosdart插件与EOS区块链进行交互的代码示例。eosdart是一个Dart库,用于与EOS区块链进行交互,它提供了API接口来处理EOS账户、交易、签名等功能。

首先,确保你已经在pubspec.yaml文件中添加了eosdart依赖:

dependencies:
  flutter:
    sdk: flutter
  eosdart: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

以下是一个简单的Flutter应用示例,展示了如何使用eosdart与EOS区块链进行交互:

import 'package:flutter/material.dart';
import 'package:eosdart/eosdart.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String result = '';

  @override
  void initState() {
    super.initState();
    _connectToEOS();
  }

  Future<void> _connectToEOS() async {
    // 配置EOS客户端
    final eos = Eos(
      httpEndpoint: 'https://api.eosnewyork.io', // EOS节点URL
      chainId: 'aca376f206b8fc25a6ed44dbdc66547c36c6c33b9398ddf31611a46dd8f856c1', // EOS主网chainId
    );

    try {
      // 获取网络信息
      final info = await eos.getInfo();
      setState(() {
        result = 'EOS Network Info: ${info.serverVersion}';
      });

      // 示例:获取账户信息
      final account = await eos.getAccount('eosio'); // 替换为你要查询的账户名
      setState(() {
        result += '\nAccount Info: ${account.accountName}, Balance: ${account.coreLiquidBalance}';
      });

      // 示例:推送交易(需要私钥签名)
      // 注意:在实际应用中,私钥应该安全存储,不要硬编码在代码中
      final privateKey = '5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'; // 示例私钥
      final publicKey = EOSPublicKey.fromString(privateKey.toEOSPublicKey());

      final transactionOptions = TransactionOptions(
        headBlockId: info.headBlockId,
        expiration: DateTime.now().add(Duration(seconds: 30)),
        refBlockNum: info.lastIrreversibleBlockNum & 0xFFFF,
        refBlockPrefix: info.lastIrreversibleBlockId.substring(4, 8).codeUnits.fold(0, (prev, byte) => (prev << 8) | byte),
      );

      final actions = [
        Action()
          ..account = 'eosio.token'
          ..name = 'transfer'
          ..authorization = [Authorization()..actor = 'youraccount'..permission = 'active']
          ..data = Transfer(
            from: 'youraccount',
            to: 'recipientaccount',
            quantity: '0.0001 EOS',
            memo: 'Test transfer',
          ).toJson(),
      ];

      final signedTransaction = await eos.signTransaction(
        transactionOptions,
        actions,
        [privateKey],
      );

      final pushTransactionResult = await eos.pushTransaction(signedTransaction);
      setState(() {
        result += '\nTransaction Result: ${pushTransactionResult.processed.transactionId}';
      });
    } catch (e) {
      setState(() {
        result = 'Error: ${e.message}';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('EOS Dart Example'),
        ),
        body: Center(
          child: Text(result),
        ),
      ),
    );
  }
}

注意

  1. 上面的代码示例仅用于演示,实际开发中请确保私钥的安全存储。
  2. 示例中的EOS节点URL和私钥仅为示例,请使用你自己的EOS节点和私钥。
  3. 在推送交易时,youraccountrecipientaccount需要替换为实际的EOS账户名。
  4. eosdart库可能会根据EOS协议和API的更新而有所变化,请参考其官方文档以获取最新信息。

这段代码展示了如何使用eosdart库连接到EOS区块链,获取网络信息,查询账户信息,以及推送签名交易。你可以根据实际需求进一步扩展和修改这些功能。

回到顶部