Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dictionary 颤振/飞镖:如何访问地图/对象中的单个条目_Dictionary_Dart_Flutter - Fatal编程技术网

Dictionary 颤振/飞镖:如何访问地图/对象中的单个条目

Dictionary 颤振/飞镖:如何访问地图/对象中的单个条目,dictionary,dart,flutter,Dictionary,Dart,Flutter,这可能是一个非常简单的问题,但我很难找到答案。 我有一个对象/映射,我不想迭代它,而是在索引处访问一个特定的键/值 例如: var _results = { 'Key_1' : 'Value_1', 'Key_2' : 'Value_2', }; 如何访问索引[1]的键和值 我尝试了\u results[index],\u results[index].value,\u results[index].key和\u results[index].toString(),但都返回空值。转换

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

例如:

var _results = {
  'Key_1' : 'Value_1',
  'Key_2' : 'Value_2', 
};
如何访问索引[1]的键和值


我尝试了
\u results[index]
\u results[index].value
\u results[index].key
\u results[index].toString()
,但都返回空值。

转换值​​列出:

var _list = _results.values.toList();
按索引获取:

print(_list[1]);

地图本质上是“无序的”,除了一些实现的偶然性。因此没有“第一个”键/值对,所以您最初的问题没有意义。

映射允许按键查找值。因此:

print(_results["Key_1"]);  // prints "Value_1"
映射不是成对的列表,您不能通过索引访问

您可以通过
Iterable
s访问键、值和条目(键和值对)

如果确实希望按整数索引,甚至可以将条目转换为列表:

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

然而,这并不是地图设计和优化的目的。您编写的映射文字将按照条目及其键和值在源代码中出现的顺序迭代条目,但并非所有映射都能保证这一点。如果您确实需要一个字符串对列表,我建议您从一开始就创建数据,而不是使用映射。它很可能更高效,也更容易阅读。

要打印键的值,只需使用:

void main(){

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

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

这是我在Flatter中访问列表内对象时所做的操作:

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());
  }

这很有效,谢谢!但是,如果不将其更改为列表,是否没有明确的访问方法?这是因为我试图访问
listViewItemBuilder
中的对象项,该对象已使用索引迭代对象[]。请尝试
\u results.values.first
\u results.values.elementAt(0)
。对于零以上的位置(对于
\u results.values.elementAt(n)
它可能只是迭代,直到看到
n
值)。这个答案有点像@lrn答案,但我希望能找到需要一个非常简单的例子的人。
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());
  }