runTransaction<T> method
- TransactionHandler<
T> transactionHandler, { - Duration timeout = const Duration(seconds: 30),
- int maxAttempts = 5,
Executes the given TransactionHandler and then attempts to commit the changes applied within an atomic transaction.
In the TransactionHandler, a set of reads and writes can be performed
atomically using the MethodChannelTransaction
object passed to the TransactionHandler.
After the TransactionHandler is run, Firestore will attempt to apply the
changes to the server. If any of the data read has been modified outside
of this transaction since being read, then the transaction will be
retried by executing the provided TransactionHandler again. If the transaction still
fails after 5 retries, then the transaction will fail.
The TransactionHandler may be executed multiple times, it should be able to handle multiple executions.
Data accessed with the transaction will not reflect local changes that have not been committed. For this reason, it is required that all reads are performed before any writes. Transactions must be performed while online. Otherwise, reads will fail, and the final commit will fail.
By default transactions are limited to 5 seconds of execution time. This
timeout can be adjusted by setting the timeout
parameter.
By default transactions will retry 5 times. You can change the number of attemps
with maxAttempts
. Attempts should be at least 1.
Implementation
Future<T?> runTransaction<T>(TransactionHandler<T> transactionHandler,
{Duration timeout = const Duration(seconds: 30), int maxAttempts = 5}) {
throw UnimplementedError('runTransaction() is not implemented');
}