firebase - 根据闭包上下文的要求,返回类型“Transaction”不是“Future<_>”
问题描述
Future<void> init() async {
if (!_initialized) {
_firebaseMessaging.requestNotificationPermissions();
User user = FirebaseAuth.instance.currentUser;
_uid = user.uid;
_firebaseMessaging.onTokenRefresh.listen((event) {
var db = FirebaseFirestore.instance;
var ref = FirebaseFirestore.instance.doc("users/$_uid");
db.runTransaction(
(transaction) => transaction.update(ref, {constants.fcm: event}));
});
我在这一行收到返回类型错误:
db.runTransaction(
(transaction) => transaction.update(ref, {constants.fcm: event}));
根据闭包上下文的要求,返回类型“Transaction”不是“Future<_>”
解决方案
你没有从显式方法返回任何东西,所以 Dart 尝试返回最后一行代码 ( db.runTransaction
) 的结果,它返回一个Transaction
.
由于该方法被标记为 return Future<void>
,这与 a 不同Transaction
,因此您会收到您发布的错误。
为什么将方法标记为返回 a Future
?真的需要退货吗?如果是这样,是什么?
推荐阅读
- php - 在 localhost/phpmyadmin 中获取目录列表而不是登录菜单
- google-apps-script - 当数字改变时创建/替换时间戳(谷歌脚本)
- javascript - 使用 UI 登录测试的节点
- mongodb - dyld:找不到符号:_syslog$DARWIN_EXTSN:mongoDb
- arrays - 在 Swift UI 中的结构数组上运行函数
- python - 我的 Python MAC_changer 程序在 if elif 和 else 语句部分有问题
- python - 在 Google Colab 上的 R 笔记本中安装 python 库
- python - 检查两个数据帧之间的部分字符串匹配
- python - 调用具有不同名称的函数
- excel - 将值复制到不同的工作簿