我创建了会议页面,它有两个选项卡栏视图,一个是即将到来的,另一个是完成会议,所以我用了条件,但它只需要日期,但我想要日期月和年。这里是我的代码。
StreamBuilder(
stream:meeting
.where("Meeting Type",isEqualTo: type)
.where("Meeting Date",isLessThanOrEqualTo: DateFormat('dd/MM/yyyy').format(DateTime.now()))
.snapshots(),
builder:(context,AsyncSnapshot<QuerySnapshot>streamSnapshot){
if (streamSnapshot.hasData){
QuerySnapshot<Object?>?querySnapshot = streamSnapshot.data;
List<QueryDocumentSnapshot> documents = querySnapshot!.docs;
List<Map>items = documents.map((e)=>{
"Meeting Date":e['Meeting Date'],
"Meeting Name":e['Meeting Name'],
"Place":e['Place'],
"Time From":e['Time From'],
"To Time":e['To Time']
}).toList();
当会议开始时,它应该显示在即将到来的页面,并在它完成后,它应该在已完成的页面。
1条答案
按热度按时间kkih6yb81#
这里我们有可能性:
1.您的会议日期以字符串形式存储在基数据库中
请注意,您可能无法像那样存储时间,而是使用Firestore提供的Timestamp。
但在这种情况下,
.where("Meeting Date",isLessThanOrEqualTo:
将按字典顺序对日期进行比较。因此,您需要一种符合时间顺序和词汇顺序的格式,如
YYYY-MM-DD
(任何年/月/日格式都可以)。它可能需要更新Firestore中的现有文档以与此匹配。
2.会议日期作为时间戳存储在您的数据库中
在这种情况下,不需要格式化,您可以按原样将时间传递给查询。