如何为列表生成器元素添加空值?

时间:2018-10-26 13:49:28

标签: arrays list dart generator

从字符串中,我尝试制作一个2D数组列表以用作表。到目前为止,下面的代码可以完美地工作。 当我尝试从服务器获取旧数据时,我的问题就开始了。我尝试修改下面的代码,但仍然出现错误,如下所示。

实际数据如下所示: [01,10,04.11.2017,PN-DURUKAN,18,B,557.12,20171014742,E,system,,AB40710000001680]。

如果任何数据不是这种格式(例如,如果我以 [01,10,04.11.2017,] 的形式获取数据,则需要将null值放入rest并添加到我的列表中。我要这样做吗?

错误: E / flutter(10127):[错误:flutter / shell / common / shell.cc(182)] Dart错误:未处理的异常: E / flutter(10127):RangeError(结束):无效值:不在302..305范围内,包括314 E / flutter(10127):#0 RangeError.checkValidRange(dart:core / errors.dart:325:9)

代码:

Future<List<List<String>>> _makeTable(mText) async {
  var entries;
  entries = mText.split(":=:");
  if (entries.length < 2) {
    throw ArgumentError.value(mText, "text", "Invalid format");
  }
  int row = int.parse(entries[0]);
  int col = int.parse(entries[1]);

  //#####################################
  //TODO: I need to modify below if statement so I can set null value instead of throw an error
  //if (entries.length != 2 + row * col) {
    //throw ArgumentError.value(mText, "text", "Invalid format");
  //}

  // List<List<String>> returnArray;
  //returnArray = new List.generate(row, (i) => entries.sublist(2 + i * col, 2 + (i + 1) * col));
  //#####################################

  // ***** MODIFICATION SECTION *******:
  List<List<String>> returnArray;
  for (var i = 0; i < row; i++) {
    var _mValue;
    _mValue = entries.sublist(2 + i * col, 2 + (i + 1) * col);
    print("$_mValue");
  }
  return returnArray;
}

更新代码:

Future<List<List<String>>> _makeTable(mText) async {
  var entries;
  entries = mText.split(":=:");
  if (entries.length < 2) {
    throw ArgumentError.value(mText, "text", "Invalid format");
  }
  int row = int.parse(entries[0]);
  int col = int.parse(entries[1]);

  List<List<String>> returnArray = new List<List<String>>();
  for (var i = 0; i < row; i++) {
    var x = 2 + i * col;
    var y = 2 + (i + 1) * col;

    if (y <= entries.length) {
      returnArray.insert(i, entries.sublist(x, y));
    }
  }
  return returnArray;
}

0 个答案:

没有答案