我正在 flutter 中创建动态数据表视图,其中列标题和行值是动态添加的。数据是一个 Json 响应,标题是一个字符串数组,行中要显示的数据也是一个字符串数组。目标是在表视图中显示数据,而不需要任何硬编码值。
这就是我尝试显示数据的方法。
return ListView.builder(
shrinkWrap: true,
scrollDirection: Axis.vertical,
itemCount: snapshot.data.dataList.length,
itemBuilder: (BuildContext context, int index){
return SingleChildScrollView(
child: DataTable(
columns: (snapshot.data.headerList[index] as List).map((item) =>
DataColumn(
label:(
List.generate(item.length,(index){
return Text(item[index].toString());
})
)
)).toList(),
rows: (snapshot.data.dataList[index].dataList as List).map((item) =>
DataRow(
cells:<DataCell>[
DataCell(
List.generate(item.length,(index){
return Text(item[index].toString());
})
)
])).toList(),
),
这是 JSON 响应
"DayEnd": {
"ColumnWidths": "40´168´96´96´108´156",
"Headers": "SL.>´Customer< ´Balance Qty>´Amount>´Oldest / Recent ",
"FieldSeparator": "´",
"DataList": [
{
"Data": "1. ´ABD ´14 / 14.60´11,090´313 / 313",
"NextLevelZoomData": [
{
"Element": "eg7P27fbW/GmCr"
},
{
"Element": "AAA=="
}
],
"NextLevelZoomType": 2
},
{
"Data": "2. ´LATA´16´7,921´20 / 9",
"NextLevelZoomData": [
{
"Element": "MT63z0m7piukmtJZqdZ"
},
{
"Element": "QT/2zE/AAA="
}
],
"NextLevelZoomType": 2
},
{
"Data": "3. ´ANAND´11´915´426 / 426",
"NextLevelZoomData": [
{
"Element": "AAA="
}
],
"NextLevelZoomType": 2
},
{
"Data": "4. ´Asts´1´1,010´27 / 27",
"NextLevelZoomData": [
{
"Element": "w/VbTHwKgQAAA=="
}
],
"NextLevelZoomType": 2
},
}
上面的响应给出了一个字符串数据Headers
它由特殊字符“`”分隔,每个字符必须显示在每个列标题中,以便将其转换为数组。同样的数据也是如此。必须为每个数据维护的列宽在columnWidth中提到
类似地,数据的对齐方式(例如“SL.>”然后“>”)必须右对齐。
我不确定这是否是获取它的正确方法,这会产生错误
The argument type 'List<Text>' can't be assigned to the parameter type 'Widget'.
任何以更好的方式处理的想法将不胜感激。