Из строки я пытаюсь составить список двумерных массивов для работы в качестве таблицы.До сих пор код ниже работает отлично.Моя проблема начинается, когда я пытаюсь получить старые данные с сервера.Я пытаюсь изменить приведенный ниже код, но получаю сообщение об ошибке, как показано ниже.
Фактические данные выглядят следующим образом [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;
}