正如你可以看到在Firestore有一个集合称为照片和所有的照片有一个属性称为DateCreated,我们怎么能只显示在listView相同日期的照片?
另外,我不想在查询中硬编码日期:比如collection('photos).where('').isequalto('date')
class SweetList extends StatefulWidget {
const SweetList({
super.key,
});
@override
State<SweetList> createState() => _SweetListState();
}
class _SweetListState extends State<SweetList> {
String transparentEmoji = 'assets/images/poo2.png';
final Stream<QuerySnapshot> _photoStream = FirebaseFirestore.instance
.collection('photos')
.orderBy('dateCreated')
.snapshots();
@override
Widget build(BuildContext context) {
final width = MediaQuery.of(context).size.width;
return StreamBuilder<QuerySnapshot?>(
stream: _photoStream,
builder: (context, snapshot) {
return Container(
color: Colors.black,
child: ListView.builder(
itemCount: snapshot.data!.docs.length,
itemBuilder: ((context, index) {
final data =
snapshot.data?.docs[index].data()! as Map<String, dynamic>;
return Padding(
padding:
const EdgeInsets.symmetric(horizontal: 30, vertical: 20),
child: GestureDetector(
onTap: () {
dialog(context);
},
child: Container(
height: 400,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: Colors.white,
image: DecorationImage(
image: NetworkImage('${data['imgUrl']}'),
fit: BoxFit.fill),
),
),
),
);
}),
),
);
});
}
我们如何在listView中显示同一日期的照片?
2条答案
按热度按时间x6492ojm1#
我不太了解您的使用情形,但这可能有助于满足您的需求
1.使用分组列表-https://pub.dev/packages/grouped_list
1.创建用户必须选择要筛选的日期的流-然后按用户选择的日期查询。它不是硬编码日期,而是将动态日期传递给查询
1.默认情况下,将查询更改为分组,但不要一次查询所有影像,而是为其提供一个日期范围
z2acfund2#
有趣的问题!我认为把这个问题分解成以下几个部分是有意义的:
**1.找出所有唯一日期。**我不确定您是否可以直接从Firestore查询中获得这些数据,因此我认为您可以先获得所有文档,然后创建一个唯一日期列表。
2.将物料排序到唯一的日期时段中。
**3.显示每个桶中的照片。**现在你有一个唯一日期的列表,然后你可以选择你想要的唯一日期,并排序该日期的照片主列表(或由唯一日期组成的列表,每个唯一日期都有照片列表)