首页 > 解决方案 > Firestore StreamBuilder ListView - 屏幕闪烁

问题描述

我正在使用绑定到两个 Firestore DB 集合的嵌套 StreamBuilder 的屏幕上工作。当用户在 UI 上执行操作并且该实习生在 Firestore DB 中进行更改时,它会刷新。每次发生 DB 更改时,屏幕都会闪烁并移动到顶部,而忽略当前的滚动位置。有没有办法避免这种糟糕的用户体验?谢谢你。

      @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(),
                    ))}

标签: fluttergoogle-cloud-firestoreflutter-layoutflutter-animation

解决方案


推荐阅读