需要帮助。我使用Firestore对列表进行排序,但当我添加数据时,它总是在ListView.separated
的底部创建的。如何使新数据不显示在底部,而是显示在顶部?据我所知,您需要使用reverse
命令,但您可以准确地指示位置和方式。
firestore_repo
Query<Map<String, dynamic>> getMainCollection() {
FirebaseFirestore firestore = FirebaseFirestore.instance;
return firestore.collection('notes').orderBy('date');
}
list_note
child: ListView.separated(
physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.all(16),
separatorBuilder: (context, index) => Container(height: 5),
itemCount: widget.snapshot.data!.docs.length,
itemBuilder: (context, index) {
QueryDocumentSnapshot<Object?> documentSnapshot =
widget.snapshot.data!.docs[index];
return Dismissible(
key: Key(documentSnapshot.id),
direction: DismissDirection.endToStart,
试试这个:
final reveredList = widget.snapshot.data!.docs.reversed.toList();
然后在ListView
中使用,如下所示:
child: ListView.separated(
physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.all(16),
separatorBuilder: (context, index) => Container(height: 5),
itemCount: reveredList.length,
itemBuilder: (context, index) {
QueryDocumentSnapshot<Object?> documentSnapshot =
reveredList[index];
return Dismissible(
key: Key(documentSnapshot.id),
direction: DismissDirection.endToStart,
将此行添加到ListView.separated
:
reverse: true,
所以代码是:
child: ListView.separated(
reverse: true,
physics: const BouncingScrollPhysics(),
padding: const EdgeInsets.all(16),
separatorBuilder: (context, index) => Container(height: 5),
itemCount: widget.snapshot.data!.docs.length,
itemBuilder: (context, index) {
QueryDocumentSnapshot<Object?> documentSnapshot =
widget.snapshot.data!.docs[index];
return Dismissible(
key: Key(documentSnapshot.id),
direction: DismissDirection.endToStart,
除了如其他人所示反转UI/ListView
内部的数据外,您还可以告诉Firestore以相反的顺序返回数据。为此,请将orderBy
调用更改为:
return firestore.collection('notes').orderBy('date', descending: true);