我正在使用流生成器從 Firebase 獲取一些資料,但它給了我一個錯誤
“主體可能正常完成,導致回傳‘null’”
雖然我提供了一個回傳陳述句,我在其中回傳“資料表”小部件,但這是我的代碼
StreamBuilder<QuerySnapshot?>(
stream: _firestore.collection('cashOut').snapshots(),
builder: (context, snapshot) {
if (snapshot.hasData) {
List<DataCell> displayedDataCell = [];
for (var item in snapshot.data!.docs) {
displayedDataCell.add(
DataCell(
Text(
item['amount'].toString(),
),
),
);
}
return DataTable(
columns: const <DataColumn>[
DataColumn(
label: Text(
'Date',
),
),
DataColumn(
label: Text(
'Amount',
),
),
DataColumn(
label: Text(
'Optional Detail',
),
),
],
rows: <DataRow>[
DataRow(cells: displayedDataCell),
],
);
}
},
),
uj5u.com熱心網友回復:
builder 函式需要一個小部件才能回傳。在您的情況下,您正在回傳小部件,但它處于if狀態。這意味著如果您的if條件不滿足,您的構建器將回傳 null,這是不可接受的。
現在,根據其他答案,您可以處理其他狀態并回傳內容。但是如果你不想處理其他狀態并且你也不想顯示加載器,在你的if塊的末尾,只需添加return Container();或return SizedBox();
if因此,通過這種方式,如果條件不滿足,您將不會在螢屏上顯示任何內容。
uj5u.com熱心網友回復:
DataTable只有當你有資料時才會回傳。您還需要處理其他狀態,例如加載、錯誤...
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
/// return your widget while loadling
} else if (snapshot.hasError) {
/// return your widget based on error
} else if (snapshot.hasData) {
/// return your widget while have data
} else if (!snapshot.hasData) {
/// return your widget while there is no data
} else {
/// return widget
}
},
uj5u.com熱心網友回復:
分析器提到這一點是非常正確的,解釋正在發生的事情是:
- 構建器函式需要一個小部件才能回傳。
- 您只處理了一種情況。
根據您的代碼,您只處理快照有資料的情況,但如果它沒有任何資料,它會回傳 null ,這是構建器函式不接受的。
您的問題的潛在解決方案可能是這個。
StreamBuilder<QuerySnapshot?>(
stream: _firestore.collection('cashOut').snapshots(),
builder: (context, snapshot) {
if (snapshot.hasData) {
List<DataCell> displayedDataCell = [];
for (var item in snapshot.data!.docs) {
displayedDataCell.add(
DataCell(
Text(
item['amount'].toString(),
),
),
);
}
return DataTable(
columns: const <DataColumn>[
DataColumn(
label: Text(
'Date',
),
),
DataColumn(
label: Text(
'Amount',
),
),
DataColumn(
label: Text(
'Optional Detail',
),
),
],
rows: <DataRow>[
DataRow(cells: displayedDataCell),
],
);
}
// While it is loading or has no data
return CircularProgressIndicator();
},
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/427312.html
上一篇:字串的正則運算式(URI)
