首先,非常感谢您的宝贵时间和帮助。
我在类中定义了一个方法,用于将数据添加到 Firestore 数据库中,如下所示:
class DatabaseService {
Future<DocumentReference> addData() async {
DocumentReference doc = await _userCollection.add({
'firstName': 'Mickey',
'lastName': 'Mouse',
'age': 10,
'languages': ['English'],
'timestamp': FieldValue.serverTimestamp(),
});
return doc;
}
}
当我点击有状态类中的凸起按钮来调用此方法时。它按预期工作得很好,并在 Firestore 数据库中创建了一个新文档。我希望 addData 方法返回新创建文档的文档 ID,但我不知道如何返回并显示文档 ID。
这是我的 onPressed 事件中的代码的样子:
onPressed: () {
Future<DocumentReference> doc =
DatabaseService().addData();
print(doc);
},
它只是在控制台中打印以下行:
Instance of 'Future<DocumentReference>'
当我尝试打印 id 属性时,出现编译错误。
print(doc.id);
我使用的是最新版本的 Firebase Firestore 软件包,如下所示:
firebase_core: ^0.5.0
firebase: ^7.3.0
cloud_firestore: ^0.14.0+
最佳答案
您获得 Instance of 'Future<DocumentReference>'
的原因而不是值(value)在于它是一个Future。 Future 需要在它们具有值或错误之前等待。你应该有这样的东西
onPressed: () async {
DocumentReference doc = await DatabaseService().addData();
print(doc);
},
我强烈建议您阅读更多有关 asynchronous programming: futures, async, await 的内容。 。它会在未来为你省去很多麻烦,没有双关语的意思:)
关于firebase - Flutter中创建文档后返回新创建的Document ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63782861/