Flutter/Dart: 如何访问 map/object 中的单个条目

这可能是一个非常简单的问题,但我找不到答案。 我有一个对象/映射,我不想迭代,但访问特定的键/值在索引。

例如:

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

如何访问索引[1]的 key _ 2和 value _ 2?

我试过 _results[index]_results[index].value_results[index].key_results[index].toString(),但都返回空。

177431 次浏览

convert values ​​to List:

var _list = _results.values.toList();

get by index:

print(_list[1]);

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.

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.

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
}

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());
}
 void main() {
print(map.keys);
print(map.values);
    

//Print map value
print(map["1"]);
    

//Print keys
for(var i in map.keys){
print(i);
}
//Print value
for(var i in map.values){
print(i);
}
    

//print keys
map.keys.forEach((element) {
print(element);
});
    

// print value
map.values.forEach((element) {
print(element);
});
      

}
    

Map<String, dynamic> map = {
"1": "A",
"2": "B",
"3" : "C",
"4" : "D"
};
Map map = {"id": 1, "email": "javedmughal609@gmail.com"};

If you have data in map like above and you want to show all keys of map then you've to do this:

print(map.keys);

and if you want to print only values of inside map then you've to do this:

print(map.values);

If you want to convert your map into list, one list contains only keys and other list contains only values then you have to do these steps:

var onlyKey = map.entries.toList();

and to print list index_vise print(onlyKey[0].key);

var onlyValues = map.values.toList();

and to print list index_vise print(onlyValues[0]);