【发布时间】:2019-06-18 12:28:38
【问题描述】:
我正在尝试详细说明一个函数,当按下图标时,firebase 编号将增加 1,当再次按下图标时,它将增加 -1,并且它会显示总喜欢返回为“文本().toString()”。我正在尝试使用“FieldValue.increment”,但不幸的是,firebase 上的数字没有增加。我究竟做错了什么?提前感谢您的帮助!
class LanchonetesContact extends StatefulWidget {
final DocumentSnapshot lanchonetes;
LanchonetesContact(this.lanchonetes);
@override
_LanchonetesContactState createState() =>
_LanchonetesContactState();
}
class _LanchonetesContactState extends State<LanchonetesContact> {
bool liked = false;
_pressed() {
setState(() {
liked = !liked;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () {
Navigator.pop(context);
}),
title: Text("Lanchonetes"),
centerTitle: true,
backgroundColor: Colors.purple[900],
actions: <Widget>[
IconButton(
icon: Icon(
liked ? Icons.favorite : Icons.favorite_border,
color: Colors.white,) ,
onPressed: () {
_pressed();
if(liked){
Firestore.instance.collection('lanchonetes')
.document("")
.updateData({"likes": FieldValue.increment(1)});
}else {
Firestore.instance.collection('lanchonetes')
.document("")
.updateData({"likes": FieldValue.increment(-1)});
}
}
)],
),
Padding(
padding: EdgeInsets.only(top: 3.0),
child: Card(
elevation: 1.0,
child: GestureDetector(
child: Container(
height: 100.0,
width: 500.0,
color: Colors.white,
child: Padding(
padding: EdgeInsets.symmetric(
vertical: 30.0, horizontal: 15.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(Icons.favorite, color: Colors.black,),
Text(widget.lanchonetes.data["likes"].toString()),
],
),
),
),
onTap: () {
},
)),
),
【问题讨论】:
标签: firebase flutter google-cloud-firestore