【发布时间】:2020-11-17 19:31:18
【问题描述】:
我在命名路线方面遇到了一些困难。
我正在尝试让一些 Firebase 数据在 onPress 保存后显示在屏幕上。
Widget build(BuildContext context) {
DocumentSnapshot document;
final thisContact = Contact.fromSnapshot(document);
...
routes: <String, WidgetBuilder>{
'/second': (BuildContext context) => ViewContact(contact: thisContact)
.
Contact.fromSnapshot(DocumentSnapshot snapshot)
: name = snapshot.data()['Name'],
phoneNumber = snapshot.data()['PhoneNumber'],
location = snapshot.data()['Location'],
rating = snapshot.data()['Rating'],
instagram = snapshot.data()['Instagram'],
birthday = snapshot.data()['Birthday'],
notes = snapshot.data()['Notes'];
保存页面
onPressed: () async {
final uid =
await TheProvider.of(context).auth.getCurrentUID();
widget.contact.name = oneController.text;
widget.contact.phoneNumber = int.tryParse(twoController.text);
widget.contact.location = threeController.text;
widget.contact.rating = int.tryParse(fourController.text);
widget.contact.instagram = fiveController.text;
widget.contact.birthday = int.tryParse(sixController.text);
widget.contact.notes = sevenController.text;
await db
.collection("userData")
.doc(uid)
.collection("Contacts")
.add(widget.contact.toJson());
Navigator.pushReplacementNamed(context, "/second");
})
],
这会导致以下错误:
The method 'data' was called on null. Receiver: null Tried calling: data()
最好的方法是什么?
【问题讨论】:
-
可以分享代码相关的“数据”。
-
@Akif 刚刚添加
-
文档为空。在传递给 Contact.fromSnapshot() 之前,您没有更新它
-
@Lee3 对,但如果我之后通过
MaterialPageRoute访问该页面,它确实有效 -
从您设置文档值的页面共享代码。我认为您的构造函数可能不正确。