Данные не удаляются из firebase с помощью streambuilder - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь удалить некоторые данные из firebase и обновить мой просмотр списка, но я не могу удалить выбранные данные из firestore.

Я пытался использовать метод удаления экземпляра firestore, но, похоже, ничего не происходит.

 class BookList extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
 return StreamBuilder<QuerySnapshot>(
  stream: Firestore.instance.collection('Inventory').snapshots(),
  builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
    if (snapshot.hasError)
      return new Text('Error: ${snapshot.error}');
    switch (snapshot.connectionState) {
      case ConnectionState.waiting: return new Text('Loading...');
      default:
        return new ListView(
          children: snapshot.data.documents.map((DocumentSnapshot 
          document) {
            return EachList(document["Quantity"], document["Name"], 
      document);
          }).toList(),
        );
    }
    },
   );
  }
}

class EachList extends StatefulWidget {
 final DocumentSnapshot documentSnapshot;
 final String details;
 final String name;

 EachList(this.name, this.details, this.documentSnapshot);

 @override
_EachListState createState() => _EachListState(this.name, this.details, 
this.documentSnapshot);
}

class _EachListState extends State<EachList> {
 final String details;
 final String name;
 final DocumentSnapshot documentSnapshot;

_EachListState(this.details, this.name, this.documentSnapshot);
 @override
 Widget build(BuildContext context) {
  return Slidable(
  delegate: new SlidableDrawerDelegate(),
  actionExtentRatio: 0.25,
  actions: <Widget>[
    new IconSlideAction(
        caption: 'Edit',
        color: Colors.blueAccent,
        icon: Icons.edit_attributes,
        onTap: () =>
        {
        /*createAlertDialog(context, name, details)*/
        }
    ),
    new IconSlideAction(
        caption: 'Delete',
        color: Colors.red,
        icon: Icons.delete,
        onTap: () async {
          confirmDialog1(context,documentSnapshot).then((bool value) {
            print("Value is $value");
          });
        }
    ),
  ],
  child: new Container(
    padding: EdgeInsets.all(8.0),
    child: new Row(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      children: <Widget>[
        new Row(
          children: <Widget>[

            new CircleAvatar(child: new Text(name[0].toUpperCase()),),
            new Padding(padding: EdgeInsets.all(10.0)),
            new Text(name, style: TextStyle(fontSize: 20.0),),
          ],
        ),
        new Text(details, style: TextStyle(fontSize: 20.0))
      ],
    ),
  ),
  );
 }
}

Future<bool> confirmDialog1(BuildContext context, DocumentSnapshot 
 document) {
 return showDialog<bool>(
  context: context,
  barrierDismissible: false, // user must tap button!
  builder: (BuildContext context) {
    return new AlertDialog(
      title: new Text('Delete'),
      content: new Text('Are you sure you want to delete?'),
      actions: <Widget>[
        new FlatButton(
          child: const Text('NO'),
          onPressed: () {
            Navigator.of(context).pop(true);
          },
        ),
        new FlatButton(
          child: const Text('YES'),
          onPressed: () {
            Firestore.instance
                .collection('Inventory')
                .document(document.toString())
                .delete()
                .catchError((e) {
              print(e);
            });
            Navigator.of(context).pop(true);
          },
        ),
      ],
    );
  });
}

Я хочу, чтобы он удалил данные из списка и пожарного депо, но, похоже, он ничего не делает, когда я нажимаю да в диалоговом окне подтверждения. Любая помощь будет принята с благодарностью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...