我是新手,我正在尝试将Firestore文档快照传递给另一个类。 我向快照类传递了一个快照文档,我想指出文档的索引,但是我不知道如何获取它 我有这个
Expanded(
child: StreamBuilder<QuerySnapshot>(
stream: ((searchString != null) &&
(searchString.trim() != ""))
? Firestore.instance
.collection('pazienti')
.where("searchIndex",
arrayContains: searchString)
.snapshots()
: Firestore.instance
.collection('pazienti')
.snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError)
return Text('Error: ${snapshot.error}');
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Center(child: CircularProgressIndicator());
default:
return ListView(
children: snapshot.data.documents
.map((DocumentSnapshot document) {
return Card(
elevation: 10.00,
margin: EdgeInsets.all(0.50),
child: ListTile(
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => Profile(miaquery: snapshot.data.documents[????])));
}
,
leading: CircleAvatar(
backgroundColor:
Colors.blueGrey.shade800,
),
title: Text(document['cognome'] +
" " +
document['nome']),
subtitle: Text(document['cognome'] +
" " +
document['nome']),
),
);
}).toList(),
);
}
})),
],
),
)
我的问题基本上在这里
Navigator.push(context, MaterialPageRoute(builder: (context) => Profile(miaquery: snapshot.data.documents[XXXX]))
如何从使用的地图中获取文档的索引?
非常感谢您的帮助
答案 0 :(得分:1)
您只想传递水龙头上的文件,因此只需传递从map方法获取的文件。
答案 1 :(得分:0)
查询快照没有数字索引。查询的结果可能在两次查询之间随时更改,并且系统不能保证任何种类的索引都是稳定的。
如果要将文档传递给另一个功能,请传递其唯一的文档ID。然后,接收者可以直接从本地缓存中查询文档,而无需在服务器上进行付费的读取操作。
答案 2 :(得分:0)
var listIndex= snapshot.data.documents.map((e) => e.data['key']);
var passIndex = listIndex.toList().indexOf(doc.data['key']);
print(passIndex);
答案 3 :(得分:0)
您可以在分配列表时简单地传递索引
Widget _buildList(BuildContext context, List<DocumentSnapshot> snapshot) {
return ListView(
padding: const EdgeInsets.only(top: 20.0),
children: snapshot.map((data) => _buildItem(context, data, snapshot.indexOf(data))).toList(),
);
}