Flutter - удалить данные Firebase в реальном времени onTap () - PullRequest
0 голосов
/ 11 июля 2020

У меня есть ListView, заполненный разными адресами одного и того же пользователя, хранящимися в базе данных Firebase Realtime. При нажатии на указанный c элемент я показываю диалоговое окно с предупреждением, запрашивая подтверждение удаления адреса. Я хочу удалить адрес из базы данных firebase, когда пользователь согласился удалить его.

Вот фрагмент onTap указанного c item:

onTap: (){

        if(widget.paymentFlag==true) {
          if (addressList[index].Pin ==
              widget.userPin) {
            Navigator.push(
                context, MaterialPageRoute(
                builder: (context) =>
                    PaymentPage(
                      Pin: widget.userPin,)
            ));
          }
          else {
            _scaffoldKey.currentState
                .showSnackBar(
                new SnackBar(
                  behavior: SnackBarBehavior
                      .floating,
                  backgroundColor: Colors.grey,
                  duration: new Duration(
                      seconds: 2),
                  content:
                  new Row(
                    children: <Widget>[

                      Icon(FontAwesomeIcons
                          .exclamation,
                        color: Colors.black,),
                      SizedBox(width: 10,),
                      new Text(
                        "Item not deliverable to this address",
                        style: TextStyle(
                            fontWeight: FontWeight
                                .w700,
                            fontStyle: FontStyle
                                .italic,
                            fontSize: 12,
                            color: Colors.black
                        ),)
                    ],
                  ),
                ));
          }
        }else{
          showDialog(
              context: context,
              builder: (BuildContext context) {
            // return object of type Dialog
            return AlertDialog(
              backgroundColor: Colors.white,
              shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
              title: new Text("Remove this Address",style: TextStyle(fontSize: 20),),
              content: new Text(addressList[index].Line1+"\n"+addressList[index].City+"\n"+addressList[index].Pin,style: TextStyle(fontSize: 16)),
              actions: <Widget>[
                // usually buttons at the bottom of the dialog
                new FlatButton(
                  child: new Text("Close"),
                  onPressed: () {
                    Navigator.of(context).pop();
                  },
                ),
                new FlatButton(
                  child: new Text("OK"),
                  onPressed: () {
                    FirebaseDatabase.instance.reference().child('AllUsers').child(widget.userNumber).child('Address');
   
  ///////////Here I want to delete the element///////////////////////////////////////////////

                    Navigator.of(context).pop();
                  },
                ),
              ],
            );
          });
        }
  

1 Ответ

1 голос
/ 11 июля 2020

Вы ищете DatabaseReference.remove()?

FirebaseDatabase.instance.reference()
                         .child('AllUsers')
                         .child(widget.userNumber)
                         .child('Address')
                         .remove();

Возможно, вы захотите выйти только после того, как данные были удалены из базы данных на сервере, и в этом случае вы 'd do ":

FirebaseDatabase.instance.reference()
                         .child('AllUsers')
                         .child(widget.userNumber)
                         .child('Address')
                         .remove()
                         .then(() {
                             Navigator.of(context).pop();
                         })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...