Изменение 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});
}