Как добавить нулевое значение в элемент генератора списков? - PullRequest
0 голосов
/ 26 октября 2018

Из строки я пытаюсь составить список двумерных массивов для работы в качестве таблицы.До сих пор код ниже работает отлично.Моя проблема начинается, когда я пытаюсь получить старые данные с сервера.Я пытаюсь изменить приведенный ниже код, но получаю сообщение об ошибке, как показано ниже.

Фактические данные выглядят следующим образом [01, 10, 04.11.2017, PN-DURUKAN, 18, B, 557.12, 20171014742, E, system,, AB40710000001680].

Если какие-либо данные не соответствуют этому формату (например, если я получаю данные как [01, 10, 04.11.2017,] Мне нужно положить нулевое значение в остаток и добавить в мой список. Как сделатьЯ делаю это?

Ошибка: E / flutter (10127): [ОШИБКА: флаттер / shell / common / shell.cc (182)] Ошибка дротика: необработанное исключение: E /flutter (10127): RangeError (end): недопустимое значение: не в диапазоне 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...