Jes*_*sse 8 dictionary dart flutter
这可能是一个非常简单的问题,但我很难找到答案。我有一个对象/地图,我不想迭代,但是在索引处访问特定的键/值。
例如:
var _results = {
'Key_1' : 'Value_1',
'Key_2' : 'Value_2',
};
Run Code Online (Sandbox Code Playgroud)
我将如何访问index [1]的key_2和value_2?
我试过_results[index],_results[index].value,_results[index].key和_results[index].toString(),但所有返回null。
Fel*_*hes 23
要打印键的值,只需使用:
void main(){
var results = {
'usd' : 3.80,
'eur' : 4.10,
'gbp' : 4.90,
};
print(results['usd']); //3.80
}
Run Code Online (Sandbox Code Playgroud)
lrn*_*lrn 17
映射允许通过键查找值。所以:
print(_results["Key_1"]); // prints "Value_1"
Run Code Online (Sandbox Code Playgroud)
映射不是成对列表,因此无法按索引访问。
您可以按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);
}
Run Code Online (Sandbox Code Playgroud)
如果您确实想按整数索引,甚至可以将条目转换为列表:
var entryList = _results.entries.toList();
print(entryList[0].key); // prints "Key_1"
Run Code Online (Sandbox Code Playgroud)
不过,这并不是为地图设计和优化的。您编写的映射文字将按照条目在源中出现的顺序对其进行迭代,以及它们的键和值,但并非所有的映射都能保证这一点。如果您实际上需要成对的字符串列表,建议您从头开始制作数据,而不要使用映射。它很可能会更有效,并且可能更容易阅读。
EdH*_*ani 15
将值转换为List:
var _list = _results.values.toList();
Run Code Online (Sandbox Code Playgroud)
通过索引获取:
print(_list[1]);
Run Code Online (Sandbox Code Playgroud)