切换布尔值

时间:2020-03-12 10:22:58

标签: flutter dart

我正在制作一个可在Firestore中切换布尔值的测试应用程序。现在我检索该值,这是正确的。但是,当我在Firestore中点击将值更改为false时该怎么办?

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
                      });
                    }),
              ),
            ]);
          }).toList(),
        );
      }
      return Container();
    });

FireStore中创建产品值“ isActive”时始终为true。

1 个答案:

答案 0 :(得分:0)

对于ProductService,您必须定义如何在服务的FireStore中设置值。

有关如何在FireStore中更新文档的信息,请参阅我的代码。

final Firestore db = Firestore.instance;
DocumentReference docRef = db.collection('COLLECTION_NAME').document('DOCUMENT_NAME');

Future<void> toggleActive(bool active) {
    return docRef.setData({
        'isActive': active,
    }, merge: true);
}

希望有帮助。