Flutter 在同一位置运行Firestore事务将导致应用程序崩溃
我需要同时向firestore数据库中的一个位置运行两个事务,但当我实现它时,会出现错误。 我在颤振应用程序中实现firestore事务,基本上我只需按一个按钮即可调用multilple事务。我应该如何确保此错误不会发生,也不会使我的应用程序崩溃 下面添加的代码清楚地显示了事务的调用,事务被准确地配置,没有任何问题,所有问题都发生了,因为它们将在同一位置被调用,并发生在同一位置 我在下面也分享了错误日志。请指导我该怎么做Flutter 在同一位置运行Firestore事务将导致应用程序崩溃,flutter,google-cloud-firestore,transactions,Flutter,Google Cloud Firestore,Transactions,我需要同时向firestore数据库中的一个位置运行两个事务,但当我实现它时,会出现错误。 我在颤振应用程序中实现firestore事务,基本上我只需按一个按钮即可调用multilple事务。我应该如何确保此错误不会发生,也不会使我的应用程序崩溃 下面添加的代码清楚地显示了事务的调用,事务被准确地配置,没有任何问题,所有问题都发生了,因为它们将在同一位置被调用,并发生在同一位置 我在下面也分享了错误日志。请指导我该怎么做 FlatButton( child:
FlatButton(
child: Text("btn3"),
onPressed: () {
Transaction1().postTransaction();
Transaction2().postTransaction();
},
错误日志
2020-05-27 18:43:14.529 1022-1344/dev.jideguru.social\u app\u ui
E/AndroidRuntime:致命异常:AsyncTask#4
流程:dev.jideguru.social_app_ui,PID:1022
java.lang.RuntimeException:执行doInBackground()时出错
在android.os.AsyncTask$3.done(AsyncTask.java:353)
位于java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
位于java.util.concurrent.FutureTask.setException(FutureTask.java:252)
位于java.util.concurrent.FutureTask.run(FutureTask.java:271)
在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
运行(Thread.java:764)
原因:java.lang.AssertionError:INTERNAL ASSERTION失败:事务对象的更新回调被调用后无法使用
调用。
位于com.google.firebase.firestore.util.Assert.fail(com.google.firebase:firebase-firestore@@21.3.0:46)
在com.google.firebase.firestore.util.Assert.hardAssert上(com.google.firebase:firebase-firestore@@21.3.0:31)
在com.google.firebase.firestore.core.Transaction.ensureCommitNotCalled上(com.google.firebase:firebase-firestore@@21.3.0:246)
在com.google.firebase.firestore.core.Transaction.lookup上(com.google.firebase:firebase-firestore@@21.3.0:81)
位于com.google.firebase.firestore.Transaction.getAsync(com.google.firebase:firebase-firestore@@21.3.0:191)
访问com.google.firebase.firestore.Transaction.get(com.google.firebase:firebase-firestore@@21.3.0:228)
在io.flatter.plugins.firebase.cloudfirestore.CloudFirestorePlugin$5.doInBackground(CloudFirestorePlugin.java:613)
在io.flatter.plugins.firebase.cloudfirestore.CloudFirestorePlugin$5.doInBackground(CloudFirestorePlugin.java:608)
位于android.os.AsyncTask$2.call(AsyncTask.java:333)
在java.util.concurrent.FutureTask.run(FutureTask.java:266)处
在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
在java.lang.Thread.run(Thread.java:764)2020-05-27 18:43:14.529 1022-1346/dev.jideguru.social_app_ui E/AndroidRuntime:
致命异常:AsyncTask#6
流程:dev.jideguru.social_app_ui,PID:1022
java.lang.RuntimeException:执行doInBackground()时出错
在android.os.AsyncTask$3.done(AsyncTask.java:353)
位于java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
位于java.util.concurrent.FutureTask.setException(FutureTask.java:252)
位于java.util.concurrent.FutureTask.run(FutureTask.java:271)
在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
运行(Thread.java:764)
原因:java.lang.AssertionError:INTERNAL ASSERTION失败:事务对象的更新回调被调用后无法使用
调用。
位于com.google.firebase.firestore.util.Assert.fail(com.google.firebase:firebase-firestore@@21.3.0:46)
在com.google.firebase.firestore.util.Assert.hardAssert上(com.google.firebase:firebase-firestore@@21.3.0:31)
在com.google.firebase.firestore.core.Transaction.ensureCommitNotCalled上(com.google.firebase:firebase-firestore@@21.3.0:246)
在com.google.firebase.firestore.core.Transaction.lookup上(com.google.firebase:firebase-firestore@@21.3.0:81)
位于com.google.firebase.firestore.Transaction.getAsync(com.google.firebase:firebase-firestore@@21.3.0:191)
访问com.google.firebase.firestore.Transaction.get(com.google.firebase:firebase-firestore@@21.3.0:228)
在io.flatter.plugins.firebase.cloudfirestore.CloudFirestorePlugin$5.doInBackground(CloudFirestorePlugin.java:613)
在io.flatter.plugins.firebase.cloudfirestore.CloudFirestorePlugin$5.doInBackground(CloudFirestorePlugin.java:608)
位于android.os.AsyncTask$2.call(AsyncTask.java:333)
在java.util.concurrent.FutureTask.run(FutureTask.java:266)处
在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
运行(Thread.java:764)
尝试在第一个事务开始前使用
async
方法和wait
关键字等待第二个事务。请显示一些代码。如果可能,请添加控制台上显示的错误详细信息日志。@Ganapat我已在上面添加了错误日志,请check@Nenroz我在上面的问题中添加了事务调用tran