如何在扑扑中使用Firestore刷新streamBuilder

时间:2019-10-01 22:53:58

标签: flutter google-cloud-firestore stream-builder

我迷失于管理流生成器...请帮助!

我有一个很棒的类,它从firestore中获取数据并将其显示为列表。流包含一个变量(rag),该变量可以基于用户交互而更改,我希望当此类变量更改时,流进行更新。我无法使其正常运行,我认为我的问题是我无法刷新信息流。如何刷新我的信息流?在iOS中,有一条简单的reloadData行可以实现...

请参见下面的代码

class RestaurantList extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder<QuerySnapshot>(
      stream: _firestore
          .collection('restaurants')
          .where('lat', isGreaterThan: appData.currentLatitude - rag)
          .where('lat', isLessThan: appData.currentLatitude + rag)
          .snapshots(),
      builder: (context, snapshot) {
        if (snapshot.hasError) return new Text('Error: ${snapshot.error}');
        switch (snapshot.connectionState) {
          case ConnectionState.waiting:
            return Center(
              child: new Text(
                'Loading...',
              ),
            );
          default:
            final restDB = snapshot.data.documents;

              for (var rest in restDB) {
                final restID = rest.documentID;
                final name = rest.data['name'];
                final lati = rest.data['lat'];
                final longi = rest.data['lon'];
                final distance = (appData.currentLatitude - lati) *
                        (appData.currentLatitude - lati) +
                    (appData.currentLongitude - longi) *
                        (appData.currentLongitude - longi);

                if (longi < appData.currentLongitude + rag &&
                    longi > appData.currentLongitude - rag) {
                  final restaurant = Restaurant(
                    restID: restID,
                    name: name,
                    distance: distance,
                    lati: lati,
                    longi: longi,
                  );

                  restaurants.add(restaurant);

                }
              }      

            return ListView(
              shrinkWrap: true,
              physics: ClampingScrollPhysics(),
              children: restaurants,
            );
        }
      },
    );
  }
}

0 个答案:

没有答案