Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter Stream Builder将更新颤振中先前数据之上的数据_Flutter_Dart_Firebase Realtime Database - Fatal编程技术网

Flutter Stream Builder将更新颤振中先前数据之上的数据

Flutter Stream Builder将更新颤振中先前数据之上的数据,flutter,dart,firebase-realtime-database,Flutter,Dart,Firebase Realtime Database,我正在使用StreamBuilder从firebase实时数据库(我经常更改)获取数据,因此我希望我的ListView相应地更新视图。但它所做的是假设我有3个数据,并且我又添加了一个数据,然后在前3个数据(即7)的下面显示所有4个数据,直到我重新打开页面 这是我的密码: Widget build(BuildContext context) { var ref = FirebaseDatabase.instance.reference().child('Orders'); List

我正在使用StreamBuilder从firebase实时数据库(我经常更改)获取数据,因此我希望我的ListView相应地更新视图。但它所做的是假设我有3个数据,并且我又添加了一个数据,然后在前3个数据(即7)的下面显示所有4个数据,直到我重新打开页面

这是我的密码:


 Widget build(BuildContext context) {

  var ref =  FirebaseDatabase.instance.reference().child('Orders');
  List<PendingOrderLoader> pendingOrderLoaderList1 = [];

  
    return Scaffold(
      body: SafeArea(
          child: Column(
            children: <Widget>[

              Container(
                height: 200,
                child: StreamBuilder(
                  stream: FirebaseDatabase.instance.reference().child('Orders').onValue,
                    builder: (BuildContext context, snapshot){
                      if (snapshot.hasData && !snapshot.hasError && snapshot.data.snapshot.value!=null) {
                        DataSnapshot snapshot1 = snapshot.data.snapshot;

                        final key = snapshot1.value.keys;
                        for(var i in key)
                        {
                          print(i);
                          PendingOrderLoader pendingOrderLoader1 = new PendingOrderLoader(
                          
                            snapshot1.value[i]['OrderID'],
                            snapshot1.value[i]['Date'],
                            snapshot1.value[i]['Time'],
                           
                          );
                          pendingOrderLoaderList1.add(pendingOrderLoader1);
                        }
                        return snapshot.data.snapshot.value == null
                            ? SizedBox()

                            : ListView.builder(
                          scrollDirection: Axis.vertical,
                          itemCount: pendingOrderLoaderList1.length,
                          itemBuilder: (context, index) {
                            return Text("      "+
                                pendingOrderLoaderList1[index].OrderID
                            );
                          },
                        );
                      } else {
                        return   Center(child: CircularProgressIndicator());
                      }
                    }
                ),
              )


            ],
          )),

    );

  }


小部件构建(构建上下文){
var ref=FirebaseDatabase.instance.reference().child('Orders');
列表pendingOrderLoaderList1=[];
返回脚手架(
正文:安全区(
子:列(
儿童:[
容器(
身高:200,
孩子:StreamBuilder(
流:FirebaseDatabase.instance.reference().child('Orders').onValue,
生成器:(BuildContext上下文,快照){
if(snapshot.hasData&&!snapshot.hasError&&snapshot.data.snapshot.value!=null){
DataSnapshot snapshot1=snapshot.data.snapshot;
最终关键点=快照1.value.keys;
for(键中的var i)
{
印刷品(一);
PendingOrderLoader PendingOrderLoader 1=新PendingOrderLoader(
snapshot1.value[i]['OrderID'],
快照1.值[i]['Date'],
快照1.value[i]['Time'],
);
pendingOrderLoaderList1.add(pendingOrderLoader1);
}
返回snapshot.data.snapshot.value==null
?SizedBox()
:ListView.builder(
滚动方向:轴垂直,
itemCount:pendingOrderLoaderList1.length,
itemBuilder:(上下文,索引){
返回文本(“”)+
pendingOrderLoaderList1[index]。医嘱ID
);
},
);
}否则{
返回中心(子项:CircularProgressIndicator());
}
}
),
)
],
)),
);
}

之前有3个数据,删除1个后,在其下方显示新数据。 我希望它只显示新数据。

定义此列表

列表pendingOrderLoaderList1=[]

在收到数据后在生成器内部

像这样:

Widget build(BuildContext context) { 
  var ref =  FirebaseDatabase.instance.reference().child('Orders');
    return Scaffold(
      body: SafeArea(
        child: Column(
         children: <Widget>[

           Container(
            height: 200,
             child: StreamBuilder(
              stream: FirebaseDatabase.instance.reference().child('Orders').onValue,
                builder: (BuildContext context, snapshot){
                  if (snapshot.hasData && !snapshot.hasError && snapshot.data.snapshot.value!=null) {
                    DataSnapshot snapshot1 = snapshot.data.snapshot;
                    List<PendingOrderLoader> pendingOrderLoaderList1 = [];
                    final key = snapshot1.value.keys;
                    for(var i in key)
                    {
                      print(i);
                      PendingOrderLoader pendingOrderLoader1 = new PendingOrderLoader(
                      
                        snapshot1.value[i]['OrderID'],
                        snapshot1.value[i]['Date'],
                        snapshot1.value[i]['Time'],
                       
                      );
                      pendingOrderLoaderList1.add(pendingOrderLoader1);
                    }
                    return snapshot.data.snapshot.value == null
                        ? SizedBox()

                        : ListView.builder(
                      scrollDirection: Axis.vertical,
                      itemCount: pendingOrderLoaderList1.length,
                      itemBuilder: (context, index) {
                        return Text("      "+
                            pendingOrderLoaderList1[index].OrderID
                        );
                      },
                    );
                  } else {
                    return   Center(child: CircularProgressIndicator());
                  }
                }
            ),
          )


        ],
      )),

);

  }
Widget构建(BuildContext){
var ref=FirebaseDatabase.instance.reference().child('Orders');
返回脚手架(
正文:安全区(
子:列(
儿童:[
容器(
身高:200,
孩子:StreamBuilder(
流:FirebaseDatabase.instance.reference().child('Orders').onValue,
生成器:(BuildContext上下文,快照){
if(snapshot.hasData&&!snapshot.hasError&&snapshot.data.snapshot.value!=null){
DataSnapshot snapshot1=snapshot.data.snapshot;
列表pendingOrderLoaderList1=[];
最终关键点=快照1.value.keys;
for(键中的var i)
{
印刷品(一);
PendingOrderLoader PendingOrderLoader 1=新PendingOrderLoader(
snapshot1.value[i]['OrderID'],
快照1.值[i]['Date'],
快照1.value[i]['Time'],
);
pendingOrderLoaderList1.add(pendingOrderLoader1);
}
返回snapshot.data.snapshot.value==null
?SizedBox()
:ListView.builder(
滚动方向:轴垂直,
itemCount:pendingOrderLoaderList1.length,
itemBuilder:(上下文,索引){
返回文本(“”)+
pendingOrderLoaderList1[index]。医嘱ID
);
},
);
}否则{
返回中心(子项:CircularProgressIndicator());
}
}
),
)
],
)),
);
}