Флажок с данными Firebase во флаттере - PullRequest
0 голосов
/ 13 февраля 2020

Я создал метод, который возвращает данные из Firebase и создает контрольный список, содержащий имя. Проблема в том, что когда я выбираю флажок, он выбирает все. Что я сделал, так это извлек Firebase (из того же документа, который возвращает имя), isSelected в качестве bool. Затем он извлекает значение из документа и, когда он устанавливает флажок, он вводит документ выбранного пользователя и обновляет значение в Firebase. Как решить эту проблему без использования флажка bool в Firebase?

Еще одна вещь, когда вы добавляете «публикацию», я хочу, чтобы вы взяли UID выбранных пользователей и создали массив в документе. Как я получу UID выбранного пользователя?

  Widget _usersCheckbox() {
return Column(
  crossAxisAlignment: CrossAxisAlignment.start,
  children: <Widget>[
    Text(
      'Send for',
      style: kLabelStyle,
    ),
    Container(
      alignment: Alignment.centerLeft,
      decoration: BoxDecoration(color: Colors.transparent),
      child: new StreamBuilder(
        stream: Firestore.instance
            .collection('users')
            .document(_idUser)
            .collection("friends")
            .snapshots(),
        builder:
            (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
          if (!snapshot.hasData) return new Text('Loading...');
          return new ListView(
            shrinkWrap: true,
            children: snapshot.data.documents.map((document) {
              return new CheckboxListTile(
                title: Text(
                  document["name"],
                  style: TextStyle(color: Colors.white),
                ),
                value: _valueCheckbox,
                onChanged: (bool newValue) {
                  Map<String, dynamic> dadosUpdate = {
                    "isSelected": _valueCheckbox,
                  };
                  setState(() {
                    Firestore.instance
                        .collection('users')
                        .document(document["uid"])
                        .updateData(dadosUpdate);
                    _valueCheckbox = newValue;
                    print(newValue);
                  });
                },
              );
            }).toList(),
          );
        },
      ),
    )
  ],
);

}

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