从字符串中,我尝试制作一个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;
}