如何使用Firebase在Flutter中更新GridView

时间:2019-04-20 15:00:18

标签: android flutter

我正在制作我的第一个Flutter应用程序之一,当他触摸底部时,我尝试更新自己的gridview。 不幸的是我不知道如何开始。 我使用StreamBuilder制作东西,但是我想一次获取6个imageUrl,当我的gridview触底时再获取4个,然后用这个新的4更新gridview。 怎么做?

@override
  void initState() {
    _controller = ScrollController();
    _controller.addListener(_scrollListener);
    super.initState();
  }

  _scrollListener() {
    if (_controller.offset >= _controller.position.maxScrollExtent &&
        !_controller.position.outOfRange) {
      setState(() {
        message = "reach the bottom";
      });
    }
    if (_controller.offset <= _controller.position.minScrollExtent &&
        !_controller.position.outOfRange) {
      setState(() {
        message = "reach the top";
      });
    }
  }


  @override
  Widget build(BuildContext context) {
return new Scaffold(
      floatingActionButton: FloatingActionButton(
          onPressed: null,
        child: Icon(Icons.add),
        backgroundColor: Colors.black,
      ),
      appBar: AppBar(
        title: Text(message),
      ),
      body: new Center(
        child: StreamBuilder(
          stream: Firestore.instance.collection('Posts').limit(6).snapshots(),
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            if (!snapshot.hasData) {
              return Text("Loading data...");
            }
            return new GridView.builder(
              controller: _controller,
              padding: EdgeInsets.all(8.0),
              gridDelegate:
              SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2,
                  crossAxisSpacing: 12.0,
                  mainAxisSpacing:  12.0,
                  childAspectRatio: cardWidth/cardHeight),
              itemBuilder: (BuildContext context, int index) {
                lastVisabe = snapshot.data.documents[index];
                return ClipRRect(
                  borderRadius: BorderRadius.circular(15.0),
                  child: new GestureDetector(
                    onTap:() {
                      print(snapshot.data.documents[index]['imageUrl']);
                    },
                    child: Image.network(snapshot.data.documents[index]['imageUrl'],
                        fit: BoxFit.fitHeight),
                  ),
                );
              },
              itemCount: snapshot.data.documents.length,
            );
          },
        )
      ),
    );

不幸的是,当我在Firestore中添加内容时,他一直使用StreamBuilder来获取新项目,并在更新的项目上更改我的项目。

0 个答案:

没有答案