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 Transaction object passed to the TransactionHandler.
After the TransactionHandler is run, FirebaseFirestore 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.s
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 30 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
@override
Future<T> runTransaction<T>(
TransactionHandler<T> transactionHandler, {
Duration timeout = const Duration(seconds: 30),
int maxAttempts = 5,
}) {
// TODO: implement runTransaction
throw UnimplementedError();
}