实施下拉参考

时间:2019-02-05 16:47:20

标签: firebase dart flutter google-cloud-firestore

您将如何在Flutter应用中实现下拉菜单刷新以从Firestore中的集合中获取数据(最好使用StreamBuilderFutureBuilder并将其显示在ListView中)?

1 个答案:

答案 0 :(得分:1)

我最终使用了这里的信息。 How to refresh or reload a flutter firestore streambuilder manually?

我添加了Refresh指示器,并使我的流从一个函数获取其数据,请参见下面的代码。

  var stream;

  @override
  void initState() {
     setState(() {
  stream = mouvesStream();
});

  super.initState();
 }

     Stream<QuerySnapshot> stream() {
      return Firestore.instance.collection(_locationState).snapshots();
     }

       @override
       Widget build(BuildContext context) {
    body: StreamBuilder(
        stream: stream,
        builder: (BuildContext context, AsyncSnapshot snapshot) {
          if (snapshot.hasError) {
            return Text(snapshot.error);
          }
          if (snapshot.connectionState == ConnectionState.active) {
            List aList = new List();
            aList.clear();
            for (DocumentSnapshot _doc in snapshot.data.documents) {
              Model _add = new Model.from(_doc);
              aList.add(_add);
            }
            return TabBarView(
              children: <Widget>[
                RefreshIndicator(
                  onRefresh: _handleRefresh,
                  child: ListView.builder(
                    itemCount: aList.length,
                    itemBuilder: (context, index) {
                      return Card(aList[index]);
                    },
                  ),
                ),
                Icon(Icons.directions_transit),
              ],
            );
          } else {
            return Container(
                child: Center(child: CircularProgressIndicator()));
          }
        })));

       }