listCoinMarkets method

Future<CoinGeckoResult<List<Market>>> listCoinMarkets({
  1. required String vsCurrency,
  2. List<String> coinIds = const [],
  3. String category = 'all',
  4. String order = CoinMarketsOrder.marketCapDescending,
  5. int itemsPerPage = 100,
  6. int page = 1,
  7. bool sparkline = false,
  8. List<String> priceChangePercentageIntervals = const [],
})

List all supported coins price, market cap, volume, and market related data.

vsCurrency sets the target currency of market data (usd, eur, jpy, etc.).

coinIds sets the ids of the coins (cryptocurrency symbols).

category filters by coin category.

order sorts results by field. Use CoinMarketsOrder enumeration as values. Default is CoinMarketsOrder.marketCapDescending

itemsPerPage sets total results per page. Default is 100.

page sets page through results. Default is 1.

sparkline sets whether sparkline in 7 days should be included. Default is false.

priceChangePercentageIntervals sets the intervals at which the price change percentage should be included. Use PriceChangeInterval enumeration as values.

Query: /coins/markets

Implementation

Future<CoinGeckoResult<List<Market>>> listCoinMarkets({
  required String vsCurrency,
  List<String> coinIds = const [],
  String category = 'all',
  String order = CoinMarketsOrder.marketCapDescending,
  int itemsPerPage = 100,
  int page = 1,
  bool sparkline = false,
  List<String> priceChangePercentageIntervals = const [],
}) async {
  final Map<String, dynamic> queryParameters = {
    'vs_currency': vsCurrency,
    'order': order,
    'per_page': itemsPerPage,
    'page': page,
    'sparkline': sparkline,
  };
  if (category != 'all') {
    queryParameters['category'] = category;
  }
  if (coinIds.isNotEmpty) {
    queryParameters['ids'] = coinIds.join(',');
  }
  if (priceChangePercentageIntervals.isNotEmpty) {
    queryParameters['price_change_percentage'] =
        priceChangePercentageIntervals.join(',');
  }
  final response = await _dio.get(
    '/coins/markets',
    queryParameters: queryParameters,
  );
  if (response.statusCode == 200) {
    final list = Convert.toListN(response.data);
    final List<Market> marketList = list != null
        ? list.map((element) => Market.fromJson(element)).toList()
        : [];
    return CoinGeckoResult(marketList);
  } else {
    return CoinGeckoResult(
      [],
      errorCode: response.statusCode ?? null,
      errorMessage: '${response.statusMessage} - ${response.data.toString()}',
      isError: true,
    );
  }
}