Я создал метод, который возвращает данные из 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(),
);
},
),
)
],
);
}