【发布时间】:2021-04-11 12:03:19
【问题描述】:
每当将新数据添加到数据库时,我的代码都可以正常工作,它会出现在我的屏幕上,而无需刷新页面任何声音以及通知用户添加了新数据。
我尝试了一种方法,即计算 List 中的项目数,然后跟踪它是否增加了 1,然后发送消息,但这不起作用。
这是我的代码:
stream: FirebaseDatabase.instance.reference().child('PendingOrders').child('78945615').onValue,
builder: (context, snapshot){
if(snapshot.hasData && !snapshot.hasError && snapshot.data.snapshot.value!=null) {
DataSnapshot snapshot1 = snapshot.data.snapshot;
List<
PendingOrderLoader> pendingOrderLoaderList = [
];
int counter = 0;
final key = snapshot1.value.keys;
for (var i in key) {
PendingOrderLoader pendingOrderLoader1 = new PendingOrderLoader(
snapshot1.value[i]['ContactNumber'],
snapshot1.value[i]['TotalPrice'],
snapshot1.value[i]['Date'],
snapshot1.value[i]['Time'],
snapshot1.value[i]['Address']['Line1'],
snapshot1.value[i]['Address']['Line2'],
);
pendingOrderLoaderList.add(pendingOrderLoader1);
pendingOrderLoaderList.sort((a, b) =>
a.Counter.compareTo(b.Counter));
counter = counter+1;
}
return
snapshot.data.snapshot.value == null
? SizedBox()
:
ListView.builder
(
shrinkWrap: true,
scrollDirection: Axis.vertical,
itemCount: pendingOrderLoaderList.length,
itemBuilder: (context, index) {
return pendingOrderLoaderList.length == 0
? Container(
child: Text("No Pending Items"),)
: Padding(
padding: const EdgeInsets.all(8.0),
child: InkWell(
onTap: () {
Navigator.push(
context, MaterialPageRoute(
builder: (context) =>
PendingOrderDetails(
orderID: pendingOrderLoaderList[index]
.OrderID,
totalPrice: pendingOrderLoaderList[index]
.TotalPrice,
contactNumber: pendingOrderLoaderList[index]
.ContactNumber,
line1: pendingOrderLoaderList[index]
.Line1,
line2: pendingOrderLoaderList[index]
.Line2,
Date: pendingOrderLoaderList[index]
.Date,
Time: pendingOrderLoaderList[index]
.Time,
PaymentMethod: pendingOrderLoaderList[index]
.PaymentMethod,
)
));
},
child: Column(
crossAxisAlignment: CrossAxisAlignment
.start,
children: <Widget>[
Container(
margin: EdgeInsets.only(
left: 10, top: 10),
decoration: BoxDecoration(
borderRadius: BorderRadius
.circular(10),
color: Colors.cyan),
child: Padding(
padding: const EdgeInsets.all(
8.0),
child: Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment
.spaceEvenly,
children: <Widget>[
Text(
(pendingOrderLoaderList[index]
.Counter)
.toString()),
Text(
pendingOrderLoaderList[index]
.PaymentMethod),
Text(
pendingOrderLoaderList[index]
.OrderID),
Text(
pendingOrderLoaderList[index]
.Time),
],
),
],
),
)
),
],
),
),
);
}
);
}else{
return Center(child: CircularProgressIndicator()
);
}
})```
【问题讨论】:
标签: flutter firebase-realtime-database stream-builder