Для приложения, которое я создаю, я хочу, чтобы пользователь мог вводить указанную дату c с помощью CupertinoDatePicker, показанного ниже, и сразу после того, как я хочу, чтобы представление списка ниже динамически обновлялось. В представлении списка должны отображаться все сообщения с отметкой времени, в которой значение находится между указанной датой пользователя.
Вот как мои данные структурированы в FireStore. По сути, у меня есть коллекция пользователей , и у каждого отдельного пользователя есть несколько атрибутов, таких как его имя, класс и т. Д. c, а также подсборка из записей . В каждом сообщении записывается информация, которую пользователь заполняет в форме, но, что наиболее важно, в нем записывается метка времени, когда сообщение было отправлено. Вот скриншот для наглядности.
Проблема, с которой я сталкиваюсь, заключается в том, что представление списка не будет обновляться, когда пользователь решит выбрать другую дату. Мой код показан ниже.
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);
},
),
Пожалуйста, сообщите, как мне решить мою проблему. Я искал несколько дней, как решить эту проблему, но у меня ничего не вышло. Любая помощь или предложение приветствуется! Заранее спасибо!