Изменение boolean значения в Firestore

В коллекции products есть boolean значение которое при создании продукта автоматически устанавливает true. Как его изменить используя Switch ?

return StreamBuilder<List<Product>>(
    stream: ProductService().products,
    builder: (context, snapshot) {
      if (snapshot.hasData) {
        return DataTable(
          columns: [
            ),
            DataColumn(
              label: Text('isActive'),
            ),
          ],
          rows: snapshot.data.map((products) {
            return DataRow(cells: [
              DataCell(
                Switch(
                    value: products.isActive,
                    onChanged: (bool notActive) {
                      setState(() {
                        products.isActive = notActive;
                        print(products.isActive);
                        updateStatus(bool notActive);

                      });
                    }),
              ),
            ]);
          }).toList(),
        );
      }
      return Container();
    });

Пытался сделать так

 void updateStatus(bool notActive) {
_firestore.document().updateData({'isActive': notActive});

}


Ответы (1 шт):

Автор решения: MiT

В общем будет так. Придется добавить в модель Product поле с id получая её примерно так documentReference.documentID при добавления нового документа в бд.

return StreamBuilder<List<Product>>(
    stream: ProductService().products,
    builder: (context, snapshot) {
      if (snapshot.hasData) {
        return DataTable(
          columns: [
            ),
            DataColumn(
              label: Text('isActive'),
            ),
          ],
          rows: snapshot.data.map((products) {
            return DataRow(cells: [
              DataCell(
                Switch(
                    value: products.isActive,
                    onChanged: (bool notActive) {
                      setState(() {
                        products.isActive = notActive;
                        print(products.isActive);
                        updateStatus(products);

                      });
                    }),
              ),
            ]);
          }).toList(),
        );
      }
      return Container();
    });

...

void updateStatus(Product product) {
    _firestore.document(product.id).updateData({'isActive': product.isActive});
}
→ Ссылка