У меня была такая же проблема в течение некоторого времени, когда мое приложение приводило к аварийному завершению работы всякий раз, когда я пытался запустить транзакцию.
Я инициировал свое приложение с помощью main.dart следующим образом:
final FirebaseApp app =
await FirebaseApp.configure(options: _options(), name: 'testauth');
final Firestore firestore = Firestore(app: app);
await firestore.settings(timestampsInSnapshotsEnabled: true);
после аутентификации я перенаправляю на homescreen.dart, который использовал новый Firestore.instance ... полностью не связанный с основным.
Я проследил свою проблему по ошибке, которая говорит
Причина: java.lang.IllegalArgumentException: Предоставленная ссылка на документ из другого экземпляра Firestore.
Итак, я удалил строки
final Firestore firestore = Firestore(app: app);
await firestore.settings(timestampsInSnapshotsEnabled: true);
и, наконец, запустил транзакцию, как ожидалось.Я думаю, что идея состоит в том, чтобы не иметь несколько экземпляров, происходящих одновременно.