Здесь я написал код для доступа ко всем документам в коллекции и покажу его в ListView.
Вот метод получения данных.
Future getData() async {
var firestore = Firestore.instance;
QuerySnapshot qn =
await firestore.collection("LiveProducts").getDocuments();
return qn.documents;
}
Вот мой метод сборки.
@override
Widget build(BuildContext context) {
return Container(
child: FutureBuilder(
future: getData(),
builder: (_, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Padding(
padding: const EdgeInsets.only(
top: 295,
),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Center(
child: SpinKitCircle(
color: Colors.deepPurpleAccent,
size: 50.0,
),
),
],
),
);
} else {
return ListView.builder(
// title: Text(snapshot.data[index].data["ProductName"]),
shrinkWrap: true,
itemCount: snapshot.data.length,
itemBuilder: (_, index) {
return InkWell(
onTap: onClick,
child: Container(
child: Container(
margin: EdgeInsets.all(15),
height: 300,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
image: DecorationImage(
image: NetworkImage(snapshot
.data[index].data["ProductImageLink"]),
fit: BoxFit.cover,
),
boxShadow: [
BoxShadow(
color: Colors.deepPurpleAccent,
blurRadius: 8,
offset: Offset(0, 10),
)
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Row(
children: <Widget>[
Expanded(
child: Padding(
padding: const EdgeInsets.all(15.0),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Text(
// name,
snapshot.data[index]
.data["ProductName"],
style: TextStyle(
color: Colors.white,
fontSize: 30,
fontWeight: FontWeight.bold),
),
SizedBox(
height: 10,
),
Text(
// type,
// '',
snapshot.data[index]
.data["ProductCompany"],
style: TextStyle(
color: Colors.white,
fontSize: 20,
fontWeight: FontWeight.bold),
),
],
),
),
),
],
),
void onClick() {
Navigator.of(context).push(MaterialPageRoute(builder: (_) {
return PlacingBids();
}));
}
Я перечислил все документы в ListView, но столкнулся с проблемой. Мне нужно получить идентификатор Firestore щелкнувшего документа в ListView. Как я могу это сделать?