Flutter EOS交互插件eosdart的使用
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),
),
),
);
}
}
注意:
- 上面的代码示例仅用于演示,实际开发中请确保私钥的安全存储。
- 示例中的EOS节点URL和私钥仅为示例,请使用你自己的EOS节点和私钥。
- 在推送交易时,
youraccount
和recipientaccount
需要替换为实际的EOS账户名。 eosdart
库可能会根据EOS协议和API的更新而有所变化,请参考其官方文档以获取最新信息。
这段代码展示了如何使用eosdart
库连接到EOS区块链,获取网络信息,查询账户信息,以及推送签名交易。你可以根据实际需求进一步扩展和修改这些功能。