【发布时间】:2021-04-27 13:46:41
【问题描述】:
我正在 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 中提到了必须为每个数据维护的列宽
同样,数据的对齐方式如 if "SL.>" then ">" 它必须是右对齐的。
我不确定这是否是获取它的正确方法,这会出错
The argument type 'List<Text>' can't be assigned to the parameter type 'Widget'.
任何以更好的方式接近的想法将不胜感激。
【问题讨论】:
-
如果可能,请添加您的 json 响应
-
@ShubhamNarkhede 添加了 json 响应
标签: flutter listview dart arraylist datatable