如何将查询长度放入文本窗口小部件



''文本(FirebaseFirestore.instance.collection("发送请求"(.其中("status",isEqualTo:"waiting"(.where("pickupDate";,其中In:[nextBusinessDay.toString((](.snapshots((.length),''

错误:无法将参数类型"Future"分配给参数类型"String"。

让我们分解一下您的表达式:

FirebaseFirestore.instance                                      // Returns a FirebaseFirestore
.collection('laundryRequest')                                 // Returns a CollectionReference
.where("status", isEqualTo: 'waiting')                        // Returns a Query
.where("pickupDate", whereIn: [nextBusinessDay.toString()])   // Returns a Query
.snapshots()                                                  // Returns a Stream<QuerySnapshot>
.length                                                       // Returns a Future<int>

每次出现Future时,都必须使用await,因此您的代码应该是:

await FirebaseFirestore.instance
.collection('laundryRequest')
.where("status", isEqualTo: 'waiting')
.where("pickupDate", whereIn: [nextBusinessDay.toString()])
.snapshots()
.length

请注意,要使用await,您必须处于async上下文中。

您可能需要将其提取到一个变量中,例如length:

final int length = await FirebaseFirestore.instance
.collection('laundryRequest')
.where("status", isEqualTo: 'waiting')
.where("pickupDate", whereIn: [nextBusinessDay.toString()])
.snapshots()
.length;

要在Text小部件中使用它,可以使用字符串格式:

Text("$length")

最新更新