正在获取ListTile项的文档ID



当点击ListTile时,我正试图从Flutter中的Firebase获取该Tile的文档ID:

Stream collectionStream = FirebaseFirestore.instance.collection('items').snapshots();
Stream documentStream = FirebaseFirestore.instance.collection('items').doc('ABC123').snapshots();
class AllItemList extends StatefulWidget {
@override
_AllItemListState createState() => _AllItemListState();
}
class _AllItemListState extends State<AllItemList> {
final Stream<QuerySnapshot> _itemStream = FirebaseFirestore.instance.collection('items').snapshots();
@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: _itemStream,
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) {
return Text('Something went wrong');
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Text("Loading");
}
return ListView(
//physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
children: snapshot.data!.docs.map((DocumentSnapshot document) {
Map<String, dynamic> data = document.data()! as Map<String, dynamic>;
return ListTile(
title: Text(data['title']),
subtitle: Text(data['userName']),
trailing: Text('Priority: '+data['priority'].toString()),
onTap: (){
print('This Document ID');
},
);
}).toList(),
);
},
);
}
}

我查看了这篇帖子:Flutter-我如何在下一页查询与之前点击的ListTile相同的文档id

但我还是被卡住了

我的实现可能与您的有点太不同,但我使用:

document.reference.id

示例:

_dataSource.snapshots().listen((event) {
final List<Thing> documents = event.docs.map((document) => document
.data()
.rebuild((doc) => doc..firebaseDocumentId = document.reference.id)).toList();
// doing my biz logic here
});

忽略.rebuild,它只是我正在使用的built_value库的一部分

最新更新