【问题标题】:Flutter FirebaseDatabase run transaction crashFlutter FirebaseDatabase 运行事务崩溃
【发布时间】:2019-10-06 02:59:32
【问题描述】:

我正在尝试使用 Flutter 在 firebase 数据库中运行事务,但出现错误,有人可以帮我解决这个问题吗?

代码:

ref.runTransaction((MutableData transaction) async {
      transaction.value = (transaction.value ?? 0) + 1;
      return transaction;
    });

错误:

E/RepoOperation(16416): Caught Throwable.
E/RepoOperation(16416): java.lang.RuntimeException: Methods marked with @UiThread must be executed on the main thread. Current thread: FirebaseDatabaseWorker
E/RepoOperation(16416):     at io.flutter.embedding.engine.FlutterJNI.ensureRunningOnMainThread(FlutterJNI.java:605)
E/RepoOperation(16416):     at io.flutter.embedding.engine.FlutterJNI.dispatchPlatformMessage(FlutterJNI.java:515)
E/RepoOperation(16416):     at io.flutter.embedding.engine.dart.DartMessenger.send(DartMessenger.java:76)
E/RepoOperation(16416):     at io.flutter.embedding.engine.dart.DartExecutor.send(DartExecutor.java:166)
E/RepoOperation(16416):     at io.flutter.view.FlutterNativeView.send(FlutterNativeView.java:155)
E/RepoOperation(16416):     at io.flutter.plugin.common.MethodChannel.invokeMethod(MethodChannel.java:98)
E/RepoOperation(16416):     at io.flutter.plugins.firebase.database.FirebaseDatabasePlugin$1.doTransaction(FirebaseDatabasePlugin.java:345)
E/RepoOperation(16416):     at com.google.firebase.database.core.Repo.startTransaction(com.google.firebase:firebase-database@@17.0.0:831)
E/RepoOperation(16416):     at com.google.firebase.database.DatabaseReference$4.run(com.google.firebase:firebase-database@@17.0.0:511)
E/RepoOperation(16416):     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
E/RepoOperation(16416):     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
E/RepoOperation(16416):     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
E/RepoOperation(16416):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/RepoOperation(16416):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/RepoOperation(16416):     at java.lang.Thread.run(Thread.java:764)

提前致谢。

【问题讨论】:

    标签: firebase firebase-realtime-database flutter transactions


    【解决方案1】:
    【解决方案2】:

    我在使用 Flutter dev channel 时遇到了同样的错误。 去stable channel 为我修好了。检查你是哪个频道flutter channel

    要切换到稳定频道,请执行以下操作:

    flutter channel stable
    flutter upgrade
    

    【讨论】:

    • 你说得对,稳定版正在运行,我猜在 1.5.8 之后的某些版本中它会崩溃。谢谢。
    • 我添加为 Flutter 的问题,关注它github.com/flutter/flutter/issues/33562
    • 太棒了!谢谢!!是否需要flutter升级命令?这导致我的 pubspec.yaml 文件发生了一些重大更改,我不得不进入并修复。
    猜你喜欢
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    相关资源
    最近更新 更多