【问题标题】:The return type 'Transaction' isn't a 'Future<_>', as required by the closure's context根据闭包上下文的要求,返回类型“Transaction”不是“Future<_>”
【发布时间】:2021-06-27 22:58:21
【问题描述】:
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<_>”,这是闭包上下文所要求的

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    您没有从显式方法返回任何内容,因此 Dart 尝试返回最后一行代码 (db.runTransaction) 的结果,该结果返回 Transaction

    由于该方法被标记为返回Future&lt;void&gt;,这与Transaction 不同,因此您会收到您发布的错误。

    为什么将方法标记为返回Future?真的需要退货吗?如果有,是什么?

    【讨论】:

      猜你喜欢
      • 2021-10-14
      • 2021-09-18
      • 2020-10-14
      • 2021-07-08
      • 2023-02-13
      • 2022-01-12
      • 2021-08-26
      • 2021-10-29
      • 2021-05-04
      相关资源
      最近更新 更多