I have been making a simple app which displays crypto coins and their price, data, market cap etc. I am using CoinGeckGo API.
import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:flutter/material.dart';
class Coin {
String? coinName;
String? coinPrice;
String? coinImgUrl;
String? coinVol;
Coin(
{@required this.coinName,
@required this.coinPrice,
@required coinImgUrl,
@required coinVol});
}
class Coins {
Future<List<Coin>> fetchCoinsData() async {
var uri = Uri.parse(
"https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=100&page=1&sparkline=false");
final response = await http.get(uri);
final json = await jsonDecode(response.body);
List<Coin> coins = [];
for (int i = 0; i < json.length; i++) {
Coin coin = Coin(
coinImgUrl: json[i]["image"].toString(),
coinName: json[i]["symbol"].toString(),
coinPrice: json[i]["current_price"].toString(),
coinVol: json[i]["total_volume"].toString(),
);
coins.add(coin);
}
return coins;
}
}
this is my function to fetch data from json api and add them into list so that i get values from that list to display in widget.
but when I am calling this function in init state, and assign fetched return value to a list i get output "Instance of 'Coin', but it should be like {coinName:'btc',coinPrice: '48000', coinVol: 478965455
like that
below is code i am calling function inside initstate.
class _MyHomePageState extends State<MyHomePage> {
List<Coin> my_list = [];
bool? _isLoading;
@override
void initState() {
// TODO: implement initState
super.initState();
_isLoading = true;
Coins().fetchCoinsData().then((List<Coin> value) {
print(value);
my_list = value;
_isLoading = false;
});
}