簡體   English   中英

如何從fire store中獲取多行並顯示在數據表中--FLUTTER

[英]How to fetch multiple rows from fire store and display in Data Table --FLUTTER

我在 firestore 上有一個名為“CASHOUT”的集合,其中包含字段 Random1、2 和 3。 收款 CASHOUT 文件 1

我能夠在 Data.table 小部件中成功獲取和顯示

但是當我創建另一個具有相同字段的文檔時

**它給我一個錯誤

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]])
],

當您將數據添加到 displayedDataCell 時,您將不同的行添加到表中的單個水平數據導致您出現此錯誤。

一行中列出的數據數必須與列數匹配。 因此,無需創建數據單元格列表,只需為 DataTable 行中的每個數據添加一行

首先獲取數據

Map<String, dynamic> data = document.data() as Map<String, dynamic>;

然后用這個替換你的行 data.table 然后它會自動更新

                  <DataRow>[
                        DataRow(
                          cells: <DataCell>[
                            DataCell(
                              Text(
                                item['RANDOM1'].toString(),
                              ),
                            ),
                            DataCell(
                              Text(
                                item['RANDOM2'].toString(),
                              ),
                            ),
                            DataCell(
                              Text(
                                item['RANDOM3'].toString(),
                              ),
                            ),
                          ],
                        ),
                      ],

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM