我需要从Firestore文档中获取数据,这些文档包含子集合。
用户在点击新页面时应获得listTile的详细信息。问题是我在点击时传递文档ID时遇到问题。
body: StreamBuilder(
stream: Firestore.instance.collection('myMainCollection').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) return CircularProgressIndicator();
return FirestoreListView(documents: snapshot.data.documents);
},
child: ListView.builder(
itemCount: documents.length,
itemExtent: 90.0,
itemBuilder: (BuildContext context, int index) {
final myListTile = ListTile(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => detailCard(documents[index] ),
),
);
},
在detailPage上,我有以下代码:
body: StreamBuilder(
stream: Firestore.instance.collection('myMainCollection').document("TappedDocID").collection('sub-collection').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) return CircularProgressIndicator();
return FirestoreListView(documents: snapshot.data.documents);
},
),
是否知道如何传递用户点击的doc ID?
答案 0 :(得分:1)
您可以做的是在详细信息页面中传递ID,然后在详细信息页面中使用传递的ID来获取数据。
我正在通过和检索相同的方式,它对我有用。
示例:
使用导航器将文档ID从列表页面传递到详细信息页面:
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DetailsPage(
docId: 'theIdYouWantToPass',
),
),
);
详细信息页面:
class DetailsPage extends StatefulWidget {
final String docId;
DetailsPage(
{Key key, @required this.docId})
: super(key: key);
@override
DetailsPageState createState() {
return new DetailsPageState();
}
}
// accessing the doc id in details page like this
class DetailsPageState
extends State<DetailsPage> {
// example if you want to store it in another var
// or you can directly use **this.widget.docId**
var docId = this.widget.docId;
}