这是我的代码:
child: new GridView.count(
crossAxisCount: 3,
children: snapshot.data.documents.map<Widget>((DocumentSnapshot document) {
return new MoodButton(
iconData: (IconData(document.data()['ref'],fontFamily: 'MaterialIcons')),
onTap: () =>
document.data()[document.data()['ref']].updateData({"display": true}),
);
}).toList(),
)
我正在尝试将已点击的图标的 display
值从 false 更新为 true。
问题在于行 document.data()[document.data()['ref']].updateData({"Display": true}),
。我不确定如何更新已单击的特定图标的数据。
我得到的错误是:
The method 'updateData' was called on null.
Receiver: null
Tried calling: updateData(_LinkedHashMap len:1)
任何帮助将不胜感激!
答案 0 :(得分:0)
我是按照 this 教程找到的。
我用 onTap: () => document.data()[document.data()['ref']].updateData({"display": true}),
替换了 onTap: () => updateData((document.data()['name']), {'display' : true}),
然后添加
updateData(selectedDoc, newValues) {
print(selectedDoc);
print(newValues);
FirebaseFirestore.instance
.collection('icons')
.doc(selectedDoc)
.update(newValues)
.catchError((e) {
print(e);
});
}