Flutter加密货币数据获取插件coingecko_api的使用

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

Flutter加密货币数据获取插件coingecko_api的使用

目录


简介

Simple Dart wrapper for the CoinGecko API

coingecko_api 是一个用于与CoinGecko API交互的Dart包,可以帮助开发者轻松获取加密货币相关的数据。


安装

在您的Dart或Flutter项目的pubspec.yaml文件中添加依赖:

dependencies:
  coingecko_api: ^2.0.0

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


使用方法

创建API实例

import 'package:coingecko_api/coingecko_api.dart';

void main() async {
  final api = CoinGeckoApi();
}

调用API方法

所有方法都是异步的,并返回一个 CoinGeckoResult 对象。您可以通过检查 isError 属性来判断请求是否成功。如果成功,可以使用 data 属性访问数据;如果失败,可以使用 errorCodeerrorMessage 查看错误信息。

例如,获取比特币过去7天的市场图表数据:

final marketChart = await api.coins.getCoinMarketChart(
  id: 'bitcoin',
  vsCurrency: 'usd',
  days: 7,
);

if (!marketChart.isError) {
  marketChart.data.forEach((item) {
    print('Price: ${item.price}, Market Cap: ${item.marketCap}');
  });
} else {
  print('Error: ${marketChart.errorCode}: ${marketChart.errorMessage}');
}

查询结果

每个API调用的结果都是一个 CoinGeckoResult 对象。该对象包含以下属性:

  • isError: 布尔值,表示请求是否成功。
  • data: 如果请求成功,包含处理后的数据。
  • errorCode: 如果请求失败,包含错误代码。
  • errorMessage: 如果请求失败,包含错误信息。

各功能模块

以下是 coingecko_api 提供的主要功能模块及其对应的方法:

ping

方法名 描述 查询字符串
ping 检查API服务器状态 /ping

simple

方法名 描述 查询字符串
listPrices 获取任何加密货币当前价格 /simple/price
listTokenPrices 获取给定平台上的代币价格 /simple/token_price/{id}
listSupportedVsCurrencies 获取支持的对比货币列表 /simple/supported_vs_currencies

coins

方法名 描述 查询字符串
listCoins 列出所有支持的加密货币ID、名称和符号 /coins/list
listCoinMarkets 列出所有支持的加密货币市场价格、市值、成交量等市场相关数据 /coins/markets
getCoinData 获取某个加密货币的当前数据 /coins/{id}
listCoinTickers 获取某个加密货币的交易对(分页) /coins/{id}/tickers
getCoinHistory 获取某个加密货币的历史数据 /coins/{id}/history
getCoinMarketChart 获取某个加密货币的历史市场数据(包括价格、市值、24小时成交量) /coins/{id}/market_chart
getCoinMarketChartRanged 获取某个加密货币在指定时间范围内的历史市场数据 /coins/{id}/market_chart/range
listCoinStatusUpdates 获取某个加密货币的状态更新 /coins/{id}/status_updates
getCoinOHLC 获取某个加密货币的OHLC数据 /coins/{id}/ohlc

contract

方法名 描述 查询字符串
getContractTokenData 从合约地址获取代币信息 /coins/{id}/contract/{contract_address}
getContractMarketChart 获取合约地址的历史市场数据 /coins/{id}/contract/{contract_address}/market_chart
getContractMarketChartRanged 获取合约地址在指定时间范围内的历史市场数据 /coins/{id}/contract/{contract_address}/market_chart/range

categories

方法名 描述 查询字符串
listCategoriesShort 列出所有分类 /coins/categories/list
listCategories 列出所有分类及其市场数据 /coins/categories

nfts

方法名 描述 查询字符串
listNfts 获取所有支持的NFT列表 /nfts/list
getDataById 根据NFT集合ID获取NFT数据 /nfts/{id}
getDataByContractAddress 根据NFT集合合约地址获取NFT数据 /nfts/{asset_platform_id}/contract/{contract_address}

exchanges

方法名 描述 查询字符串
listExchanges 列出所有交易所 /exchanges
listExchangesShort 列出所有支持的交易所ID和名称 /exchanges/list
getExchangeData 获取交易所数据 /exchanges/{id}
getExchangeTickers 获取交易所交易对(分页) /exchanges/{id}/tickers
getExchangeVolumeChartData 获取交易所成交量图表数据 /exchanges/{id}/volume_chart

derivatives

方法名 描述 查询字符串
listDerivatives 列出所有衍生品交易对 /derivatives
listDerivativeExchanges 列出所有衍生品交易所 /derivatives/exchanges
getDerivativeExchange 获取衍生品交易所数据 /derivatives/exchanges/{id}
listDerivativeExchangesShort 列出所有衍生品交易所名称和标识符 /derivatives/exchanges/list

asset_platforms

方法名 描述 查询字符串
listAssetPlatforms 列出所有资产平台(区块链网络) /asset_platforms

exchange_rates

方法名 描述 查询字符串
getBtcExchangeRates 获取BTC兑换汇率 /exchange_rates

search

方法名 描述 查询字符串
searchFor 搜索加密货币、分类和市场 /search

trending

方法名 描述 查询字符串
getSearchTrending 获取CoinGecko上24小时内最热门的7个搜索加密货币 /search/trending

global

方法名 描述 查询字符串
getGlobalData 获取全球加密货币数据 /global
getGlobalDefiData 获取全球去中心化金融(DeFi)数据 /global/decentralized_finance_defi

companies

方法名 描述 查询字符串
getCompaniesData 获取公开公司数据 /companies/public_treasury/{coin_id}

indexes

方法名 描述 查询字符串
listMarketIndexes 列出所有市场指数 /indexes
getMarketIndex 获取市场指数数据 /indexes/{market_id}/{id}
listMarketIndexesShort 列出市场指数ID和名称 /indexes/list

完整示例

以下是一个完整的示例,演示如何使用 coingecko_api 获取比特币在过去7天内的OHLC(开盘价、最高价、最低价、收盘价)数据:

import 'package:coingecko_api/coingecko_api.dart';

Future<void> main() async {
  print(
    'This example demonstrates receiving OHLC data (open, high, low, close) '
    'from CoinGecko on the BTC/USD pair for the last 7 days.',
  );
  
  final api = CoinGeckoApi();
  print('Calling method getCoinOHLC() ...');
  
  final result = await api.coins.getCoinOHLC(
    id: 'bitcoin',
    vsCurrency: 'usd',
    days: 7,
  );
  
  if (!result.isError) {
    print('getCoinOHLC() results:');
    result.data.forEach(
      (item) => print(
        '${item.timestamp}: open = ${item.open}, high = ${item.high}, low = ${item.low}, close = ${item.close}',
      ),
    );
    print('Test method completed successfully.');
  } else {
    print('getCoinOHLC() method returned error:');
    print('${result.errorCode}: ${result.errorMessage}');
    print('Test method failed.');
  }
}

通过上述代码,您可以轻松获取并打印比特币在过去7天内的OHLC数据。希望这个示例能帮助您更好地理解和使用 coingecko_api 插件。

如果您有任何问题或需要进一步的帮助,请随时联系我!


更多关于Flutter加密货币数据获取插件coingecko_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter加密货币数据获取插件coingecko_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何使用 coingecko_api 插件在 Flutter 中获取加密货币数据的代码示例。这个插件允许你访问 CoinGecko 的 API,以获取加密货币的市场数据、价格、交易量等信息。

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

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

然后,运行 flutter pub get 来获取依赖。

接下来,在你的 Flutter 应用中,你可以按照以下步骤使用 coingecko_api

  1. 初始化 CoinGecko API 客户端

  2. 调用 API 获取数据

  3. 处理并显示数据

以下是一个完整的示例,展示如何在 Flutter 应用中获取并显示比特币(BTC)的当前价格:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'CoinGecko API Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String? btcPrice;

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

  Future<void> _fetchBitcoinPrice() async {
    // 初始化 CoinGecko API 客户端
    final client = CoinGeckoClient();

    try {
      // 获取比特币的市场数据
      final coinData = await client.coins.getCoinById('bitcoin', includeMarketData: true);
      
      // 从响应中提取当前价格
      final price = coinData!.marketData!.currentPrice!.usd!;
      
      // 更新状态
      setState(() {
        btcPrice = price.toStringAsFixed(2);
      });
    } catch (e) {
      print('Error fetching data: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('CoinGecko API Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Bitcoin Price (USD)',
              style: TextStyle(fontSize: 24),
            ),
            SizedBox(height: 16),
            Text(
              btcPrice ?? 'Loading...',
              style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  • 我们创建了一个 Flutter 应用,并在 MyHomePage 中初始化了 CoinGeckoClient
  • 使用 client.coins.getCoinById('bitcoin', includeMarketData: true) 方法获取比特币的市场数据。
  • 从返回的 coinData 中提取当前价格,并更新到状态中。
  • build 方法中,我们显示了一个简单的界面,展示加载中的状态或比特币的价格。

请确保你的 Flutter 环境已经正确配置,并且已经连接到互联网,以便能够访问 CoinGecko 的 API。如果 API 发生变化,请参考 coingecko_api 插件的官方文档以获取最新的使用方法。

回到顶部