通过ListView中的onTap函数打开特定的集合

时间:2019-07-20 09:16:29

标签: flutter google-cloud-firestore flutter-listview

我正在Firestore中使用数据库。我的一些文档本身包含特定的收藏夹,我想使用Flutter应用程序。 因此,我有一个包含文档的常规文档集,文档本身也包含文档集。

我的问题是我不知道如何使用ListView中的onTap函数打开正确的子集合。

我的第一个ListView当前只是一个带有两个文本变量的简单列表。当点击此ListView中的一项时,我的应用程序应该打开一个Flexible,其中包含第二个List和一个地图。它基本上是一个交互式GoogleMap和POI列表。数据库条目包含一些字符串以及Geolocation坐标。

我有两个独立的代码部分,但是我现在需要将它们结合起来。 我不知道合适的方法。

这是我的第一个简单的ListView

´´´

Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
  stream: Firestore.instance.collection('tours_collection').snapshots(),
  builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
    if (snapshot.hasError)
      return new Text('Error: ${snapshot.error}');
    switch (snapshot.connectionState) {
      case ConnectionState.waiting: return new Text('Loading...');
      default:
        return new ListView(
          children: snapshot.data.documents.map((DocumentSnapshot document) {
            return new ListTile(
              title: new Text(document['name']),
              subtitle: new Text(document['region']),
              onTap: () {

              },
            );
          }).toList(),
        );
    }
  },
);

}

´´´

这是我的Flexible,带有第二个特定的列表和地图

´´´

return Scaffold(
  body: StreamBuilder<QuerySnapshot>(
    stream: ???,
    builder: (context, snapshot) {
      if (snapshot.hasError) {
        return Center(child: Text('Error: ${snapshot.error}'));
      }
      if (!snapshot.hasData) {
        return Center(child: const Text('Loading...'));
      }
      return Column(
        children: <Widget>[
          Flexible(
            flex: 2,
            child: TourMap(
              documents: snapshot.data.documents,
              initialPosition: const LatLng(-33.870663, 151.206793),
              mapController: _mapController,
            ),
          ),
          Flexible(
            flex: 3,
            child: TourList(
                documents: snapshot.data.documents,
                mapController: _mapController),
          )
        ],
      );
    },
  ),
);

´´´

特别是在第二部分中,我不知道是否需要另一个流引用。

在这张照片中,您可以看到我的第一份文档列表,该列表当前仅包含两个字符串“ name”和“ region”

此图显示了其中一个文档(Sydney Citytour中的sydney_spots)的集合中的一个特定条目。有地理位置参考和一个用于标记目的的ID字符串。

enter image description here

0 个答案:

没有答案