Flutter以太坊区块链数据查询插件etherscan_api的使用

Flutter以太坊区块链数据查询插件etherscan_api的使用


Etherscan Dart API

License GitHub Tag

GitHub Issues

这是一个用于访问 etherscan.io API 的 Dart 库。

import 'package:etherscan_api/etherscan_api.dart';

// 使用你的 API 密钥初始化 EtherscanAPI
final eth = EtherscanAPI(apiKey: 'YourApiKey');

// 查询指定地址的余额
final bal = await eth.balance(
  addresses: [
    '0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae',
  ],
);

print(bal);

对于测试网络的使用

支持的测试网络:

  • morden
  • ropsten
  • rinkeby

示例代码:

final eth = EtherscanAPI(
  apiKey: 'YourApiKey', // API 密钥
  chain: EthChain.ropsten, // 网络/链
  enableLogs: true, // 启用日志记录
);

完整的示例 Demo

import 'package:etherscan_api/etherscan_api.dart';

void main() async {
  // 初始化 EtherscanAPI,指定 API 密钥、测试网络和是否启用日志
  final eth = EtherscanAPI(
      apiKey: 'YourApiKey', chain: EthChain.ropsten, enableLogs: false);

  // 查询内部交易列表
  final bal = await eth.txListInternal(
      txhash:
          '0x40eb908387324f2b575b4879cd9d7188f69c8fc9d87c901b9e2daaea4b442170');

  // 打印结果
  print(bal);

  // 输出格式为: EtherScanBalanceModel(1, OK, [EtherScanBalanceResult(0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae, 430141119464489895480972)])
}

更多关于Flutter以太坊区块链数据查询插件etherscan_api的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter以太坊区块链数据查询插件etherscan_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用etherscan_api插件来查询以太坊区块链数据的示例代码。这个插件允许你通过Etherscan API获取区块链上的各种数据。

首先,你需要在你的pubspec.yaml文件中添加etherscan_api依赖:

dependencies:
  flutter:
    sdk: flutter
  etherscan_api: ^最新版本号  # 请替换为实际的最新版本号

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

接下来,你可以按照以下步骤在你的Flutter应用中使用这个插件。

1. 初始化Etherscan API客户端

你需要提供你的Etherscan API密钥,这个密钥可以从Etherscan官网获取。

import 'package:etherscan_api/etherscan_api.dart';

void main() {
  String apiKey = '你的Etherscan API密钥';
  EtherscanClient client = EtherscanClient(apiKey: apiKey, network: EtherscanNetwork.MAINNET);
  
  // 在这里运行你的查询函数
  runApp(MyApp(client: client));
}

2. 查询账户余额

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

class MyApp extends StatefulWidget {
  final EtherscanClient client;

  MyApp({required this.client});

  @override
  _MyAppState createState() => _MyAppState();
}

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

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

  Future<void> _getBalance() async {
    String address = '0x你的以太坊地址';  // 替换为实际的以太坊地址
    try {
      var result = await widget.client.getAccountBalance(address);
      setState(() {
        balance = 'Balance: ${result.weiToEther} ETH';
      });
    } catch (e) {
      setState(() {
        balance = 'Error: ${e.message}';
      });
    }
  }

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

3. 查询交易信息

Future<void> _getTransaction() async {
    String txHash = '0x你的交易哈希';  // 替换为实际的交易哈希
    try {
      var result = await widget.client.getTransactionByHash(txHash);
      // 处理交易信息,例如打印到控制台或更新UI
      print(result.toJson());
    } catch (e) {
      print('Error: ${e.message}');
    }
  }

你可以在按钮点击事件中调用_getTransaction()函数来查询交易信息。

4. 查询区块信息

Future<void> _getBlock() async {
    int blockNumber = 12345678;  // 替换为实际的区块号
    try {
      var result = await widget.client.getBlockByNumber(blockNumber);
      // 处理区块信息,例如打印到控制台或更新UI
      print(result.toJson());
    } catch (e) {
      print('Error: ${e.message}');
    }
  }

同样,你可以在按钮点击事件中调用_getBlock()函数来查询区块信息。

完整示例

将上述代码片段整合到一个完整的Flutter应用中:

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

void main() {
  String apiKey = '你的Etherscan API密钥';
  EtherscanClient client = EtherscanClient(apiKey: apiKey, network: EtherscanNetwork.MAINNET);
  
  runApp(MyApp(client: client));
}

class MyApp extends StatefulWidget {
  final EtherscanClient client;

  MyApp({required this.client});

  @override
  _MyAppState createState() => _MyAppState();
}

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

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

  Future<void> _getBalance() async {
    String address = '0x你的以太坊地址';  // 替换为实际的以太坊地址
    try {
      var result = await widget.client.getAccountBalance(address);
      setState(() {
        balance = 'Balance: ${result.weiToEther} ETH';
      });
    } catch (e) {
      setState(() {
        balance = 'Error: ${e.message}';
      });
    }
  }

  Future<void> _getTransaction() async {
    String txHash = '0x你的交易哈希';  // 替换为实际的交易哈希
    try {
      var result = await widget.client.getTransactionByHash(txHash);
      print(result.toJson());
    } catch (e) {
      print('Error: ${e.message}');
    }
  }

  Future<void> _getBlock() async {
    int blockNumber = 12345678;  // 替换为实际的区块号
    try {
      var result = await widget.client.getBlockByNumber(blockNumber);
      print(result.toJson());
    } catch (e) {
      print('Error: ${e.message}');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Etherscan API Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(balance),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: _getTransaction,
                child: Text('Get Transaction'),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: _getBlock,
                child: Text('Get Block'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

这个示例展示了如何使用etherscan_api插件来查询账户余额、交易信息和区块信息。请确保替换示例代码中的占位符(如API密钥、以太坊地址、交易哈希和区块号)为实际的值。

回到顶部