how to trun a Future<void>main to a Future<List> in dart flutter without errors

Issue

I would like please to turn the code below to be :

Future<List> fetchPrices() async {details in code below} 

without having errors.

The code to be changed is here:

Future<void> main(List<String> arguments) async {
  Map<String, num> quotes = await Forex.fx(
    quoteProvider: QuoteProvider.yahoo,
    base: 'USD',
    quotes: <String>['EUR', 'JPY']
  );
  print('Number of quotes retrieved: ${quotes.keys.length}.');
  print('Exchange rate USDEUR: ${quotes['USDEUR']}.');
  print('Exchange rate USDJPY: ${quotes['USDJPY']}.');
  quotes = await Forex.fx(
    quoteProvider: QuoteProvider.ecb,
    base: 'JPY',
    quotes: <String>['EUR', 'USD']
  );
  print('Number of quotes retrieved: ${quotes.keys.length}.');
  print('Exchange rate JPYEUR: ${quotes['JPYEUR']}.');
  print('Exchange rate JPYUSD: ${quotes['JPYUSD']}.');
}

Solution

According to your code example Forex.fx() return Map<String, num>. So you have two options here.

Future<List<String>> fooFunction(List<String> arguments) async {
  Map<String, num> quotes = await Forex.fx(
      quoteProvider: QuoteProvider.yahoo,
      base: 'USD',
      quotes: <String>['EUR', 'JPY']
  );
  return quotes.keys;
}

Future<List<num>> fooFunction(List<String> arguments) async {
  Map<String, num> quotes = await Forex.fx(
      quoteProvider: QuoteProvider.yahoo,
      base: 'USD',
      quotes: <String>['EUR', 'JPY']
  );
  return quotes.values;
}

Answered By – Zakir

Answer Checked By – Mildred Charles (FlutterFixes Admin)

Leave a Reply

Your email address will not be published. Required fields are marked *