t0m3k
t0m3k

Reputation: 317

Map<string, string> argument

I'm trying to assign a Map<string, string> argument to double. If that's even what I have to do. I have no idea how to work with this argument type. Here it is:

await sheet.values.map.column(3)

I'm using this to extract column #3 and all its values from a google sheet via gsheets. This is a nightmare to work with... Anybody know if there's another way to call the column? or if there's a way to convert the Map<string, string> to a single string containing only the values in the column ? In this case, they're coordinate values for longitude or latitude. I'm trying to call these values for plotting in Google maps. Here's the rest of my code:

Iterable markers = [];

var latstr = (sheet.values.map.column(3)); //latitude
var lngstr = (sheet.values.map.column(4)); //longitude

List<dynamic> names = [];
List<double> lat = [];
List<double> lng = [];
for (var i = 0; i < 10; i++) {

  names.add(latstr);
  lat.add(parse(await sheet.values.map.column(3));  //<--- I have no idea what I'm doing here. Trying to convert to double. very confused. 
  lng.add(await sheet.values.map.column(4));
}

to add to this, here's the full error:

The argument type 'Map<String, String>' can't be assigned to the parameter type'double'.

here's how i'm pulling from google sheets:

const _spreadsheetId = 'xxxxxxxxxxxxxx';
final gsheets = GSheets(_credentials);
final ss = await gsheets.spreadsheet(_spreadsheetId);
var sheet = await ss.worksheetByTitle('xxxxxxxxxxxx');

Upvotes: 0

Views: 278

Answers (1)

Yadhu
Yadhu

Reputation: 3305

As the document says await sheet.values.map.column(4) gives you a Map<String,String>, but lng is List<double>, so only doubles can be added to it but you are trying to asign a Map<String,String> which results in the error,

//try this to map the map into a map of doubles (mapception), if your okey with using Map instead of a list
Map<double,double> m = (await sheet.values.map.column(4)).map((key, value)=> MapEntry(double.parse(key), double.parse(value)));

parse will throw if it encounters a character which is not a digit

Upvotes: 1

Related Questions