我在 firestore 上有一个名为“CASHOUT”的集合,其中包含字段 Random1、2 和 3。
我能够在数据表小部件中成功获取并显示
**它给我一个错误
rows.cells.length != columns.length
**
我做错了什么?这是代码
StreamBuilder(
stream: _firestore.collection('CASHOUT').snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) {
return const Text('Something went wrong');
}
if (snapshot.connectionState == ConnectionState.waiting) {
return const Text("Loading");
}
if (snapshot.hasData) {
List<DataCell> displayedDataCell = [];
for (var item in snapshot.data!.docs) {
displayedDataCell.add(
DataCell(
Text(
item['RANDOM1'].toString(),
),
),
);
displayedDataCell.add(
DataCell(
Text(
item['RANDOM2'].toString(),
),
),
);
displayedDataCell.add(
DataCell(
Text(
item['RANDOM3'].toString(),
),
),
);
}
return FittedBox(
child: DataTable(
columns: const <DataColumn>[
DataColumn(
label: Text(
'Date',
),
),
DataColumn(
label: Text(
'Amount',
),
),
DataColumn(
label: Text(
'Optional Detail',
),
),
],
rows: <DataRow>[
DataRow(cells: displayedDataCell),
],
),
);
}
return const CircularProgressIndicator();
},
),
最佳答案
您收到此错误是因为您要创建一个单元格中有 6 个项目的 DataRow
,而必须创建 2 个包含 3 个单元格的 DataRow
。
rows: <DataRow>[
for (int i = 0; i < displayedDataCell.length; i += 3)
DataRow(cells: [displayedDataCell[i], displayedDataCell[i + 1], displayedDataCell[i + 2]])
],
关于firebase - 如何从fire store中获取多行并显示在数据表中--FLUTTER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71241833/