Firestore StreamBuilder ListView - мерцание экрана - PullRequest
0 голосов
/ 28 мая 2020

Я работаю над экраном с вложенным StreamBuilder, привязанным к двум коллекциям Firestore DB. Он обновляется, когда пользователь выполняет операцию в пользовательском интерфейсе, и этот стажер вносит изменения в базу данных Firestore. Каждый раз, когда происходит изменение БД, экран мерцает и перемещается вверх, игнорируя текущую позицию прокрутки. Есть ли способ избежать этого плохого взаимодействия с пользователем? Спасибо.

      @override
      Widget build(BuildContext context) {
        return StreamBuilder<QuerySnapshot>(
            stream: stream1(),
            builder:(context, AsyncSnapshot<QuerySnapshot> userOrder){
          return StreamBuilder<QuerySnapshot>(
          stream: stream2(),
          builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
            switch(snapshot.connectionState){
              default:
                return new Scaffold(
                    appBar: getHeaderAppBar(),
                    drawer: getLeftMenuBarDrawer(),
                    backgroundColor: Colors.white,
                    body: Scrollbar(child:ListView(
                      children: snapshot.data.documents.map((DocumentSnapshot mydoc){           
                        if(userOrder.hasData){
                          ...
                        }
                        ..
                        return ListTile(
                          title: getTitle()
                          subtitle: getSubtitle()
                          isThreeLine: true,
                        );
                      }).toList(),
                    ))}
...