Flutter/Dart: How to access a single entry in a map/object

DictionaryDartFlutter

Dictionary Problem Overview


This might be a very simple question but I am having trouble finding an answer. I have a object/map that I would not like to iterate but access a specific key/value at an index.

For example:

var _results = {
  'Key_1' : 'Value_1',
  'Key_2' : 'Value_2', 
};

How would I access the index[1]'s key_2 and value_2?

I've tried _results[index], _results[index].value, _results[index].key and _results[index].toString() but all returning null.

Dictionary Solutions


Solution 1 - Dictionary

A map allows looking up values by keys. So:

print(_results["Key_1"]);  // prints "Value_1"

A map is not a list of pairs, you cannot access by index.

You can access the keys, values and entries (pairs of key and value) as Iterables.

for (var key in _results.keys) print(key); // prints Key_1 then Key_2
for (var value in _results.values) print(value); // prints Value_1 then Value_2
for (var entry in _results.entries) {
  print(entry.key);
  print(entry.value);
}

You can even convert the entries to a list if you really want to index by integer:

var entryList = _results.entries.toList();
print(entryList[0].key);  // prints "Key_1"

Still, this is not what maps are designed and optimized for. The map literal you wrote will iterate the entries, and their keys and values, in the order they occur in the source, but not all maps guarantee that. If you actually need a list of pairs of strings, I'd recommend making your data that from the beginning, instead of using a map. It will very likely be more efficient, and possibly easier to read.

Solution 2 - Dictionary

convert values ​​to List:

var _list = _results.values.toList();

get by index:

print(_list[1]);

Solution 3 - Dictionary

To print a value of a key, just use:

void main(){

  var results = {
  'usd' : 3.80,
  'eur' : 4.10, 
  'gbp' : 4.90, 
  };

  print(results['usd']); //3.80
}

Solution 4 - Dictionary

A map is by nature "unordered", except by accident of some implementations. So there's not a "first" key/value pair, so your original question doesn't make sense.

Solution 5 - Dictionary

This is what i do to access object inside list in flutter :

getOrderType() async{
    setState(() {
      order.add(new OrderTransactionTypeModel("1", "table", "TABLE"));
      order.add(new OrderTransactionTypeModel("10", "freeTable", "FREE TABLE"));
      order.add(new OrderTransactionTypeModel("7", "jasa", "JASA"));
      order.add(new OrderTransactionTypeModel("2", "bungkus", "BUNGKUS"));
      order.add(new OrderTransactionTypeModel("4", "delivery", "DELIVERY"));
      order.add(new OrderTransactionTypeModel("6", "ojekOnline", "OJEK ONLINE"));
      order.add(new OrderTransactionTypeModel("11", "reservasi", "RESERVASI"));
      order.add(new OrderTransactionTypeModel("99", "lainnya", "LAINNYA"));

      var mappedOrder = order.map((n) => 'Id: ${n.orderId} name: ${n.orderName}');
    });

    print(mappedOrder.toString());
  }

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJesseView Question on Stackoverflow
Solution 1 - DictionarylrnView Answer on Stackoverflow
Solution 2 - DictionaryEdHuamaniView Answer on Stackoverflow
Solution 3 - DictionaryFellipe SanchesView Answer on Stackoverflow
Solution 4 - DictionaryRandal SchwartzView Answer on Stackoverflow
Solution 5 - DictionaryCevin WaysView Answer on Stackoverflow