【发布时间】:2020-06-30 05:57:50
【问题描述】:
对于我正在构建的应用程序,我希望用户能够通过下面显示的 CupertinoDatePicker 输入特定日期,并且在我希望下面的列表视图动态更新之后立即进行。列表视图应显示所有时间戳介于用户指定日期之间的帖子。
这是我的数据在 Firestore 中的结构。本质上,我有一个用户集合,每个用户都有一些属性,例如他们的姓名、等级等以及帖子的子集合。每个帖子都会记录用户在表单中填写的信息,但最重要的是它会记录提交帖子时的时间戳。为了清楚起见,这是一个屏幕截图。
我面临的问题是,当用户决定选择不同的日期时,列表视图不会更新。我的代码如下所示。
Container(
child: Expanded(
child: StreamBuilder<QuerySnapshot>(
stream: _firestore
.collectionGroup('posts')
.where('timestamp', isGreaterThanOrEqualTo: _start)
.where('timestamp', isLessThanOrEqualTo: _end)
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData)
return Center(child: Text("No Users"));
return ListView.builder(
shrinkWrap: true,
itemExtent: 80.0,
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) => _buildListItem(
context, snapshot.data.documents[index]),
);
},
),
),
),
_start 和 _end 在用户选择不同日期时计算。
child: CupertinoDatePicker(
initialDateTime: _dateTime,
use24hFormat: false,
onDateTimeChanged: (val) {
setState(() {
_dateTime = val;
_start = DateTime(
_dateTime.year,
_dateTime.month,
_dateTime.day,
0,
0,
);
_end = DateTime(
_dateTime.year,
_dateTime.month,
_dateTime.day,
23,
59,
59,
);
});
print(val);
print(_dateTime);
},
),
请告知我将如何解决我的问题。我一直在寻找如何解决此问题的几天,但我没有成功。任何帮助或建议表示赞赏!提前致谢!
【问题讨论】:
标签: firebase listview flutter google-cloud-firestore