DART lang,如何使用Map列表?

Has*_*sef 3 dart

我是一个多行销售订单,想要将每行作为(数字,物料代码,数量)的地图来处理,并且需要将所有这些地图都放在列表中,因此orderlines [0]是第一个地图订单行。

如果我有3行,那么下面的程序效果很好。

但是,如果我不知道行数,而行数取决于用户,那怎么定义它呢?

  var orderLines = [{ 'number'  : '',
                  'Item' : '',
                  'Qty'  : ''
                 },
                 { 'number'  : '',
                  'Item' : '',
                  'Qty'  : ''
                 },
                 { 'number'  : '',
                  'Item' : '',
                  'Qty'  : ''
                 }
               ];
Run Code Online (Sandbox Code Playgroud)

我需要定义“ orderLines”,以便可以用以下代码中的数据填充它:

   for(int i=0;i<=number_of_lines;i++){
       orderLines[i]['number']=element.childNodes[i].childNodes[0].value;
       orderLines[i]['number']=element.childNodes[i].childNodes[1].value;
       orderLines[i]['Qty']=element.childNodes[i].childNodes[2].value;  
 }
Run Code Online (Sandbox Code Playgroud)

Gün*_*uer 7

根据更新的问题进行更新

如果列表比索引短,则不能为列表中的特定索引分配值。您必须使用填写列表add。如果列表已在给定索引处具有值,则可以将值替换为mylist[someIndex] = someValue;

var orderLines = <Map>[]; // creates an empty List<Map>

for(int i=0; i <= number_of_lines; i++){
  var map = {};
  map['number'] = element.childNodes[i].childNodes[0].value;
  map['Item'] = element.childNodes[i].childNodes[1].value;
  map['Qty'] = element.childNodes[i].childNodes[2].value; 
  orderLines.add(map);
}
Run Code Online (Sandbox Code Playgroud)

要么

for(int i = 0; i <= number_of_lines; i++){
  orderLines.add({
    'number': element.childNodes[i].childNodes[0].value,
    'Item': element.childNodes[i].childNodes[1].value,
    'Qty': element.childNodes[i].childNodes[2].value});
}
Run Code Online (Sandbox Code Playgroud)

原始答案

我不确定您想知道什么,但我想这就是您要寻找的

var orderLines = <Map>[]; // creates an empty List<Map>

orderLines.add({ 'number'  : '',
              'Item' : '',
              'Qty'  : ''
             });
orderLines.add({ 'number'  : '',
              'Item' : '',
              'Qty'  : ''
             });
orderLines.add({ 'number'  : '',
              'Item' : '',
              'Qty'  : ''
             });
Run Code Online (Sandbox Code Playgroud)