Android не ловит Firestore Transaction PlatformException - PullRequest
1 голос
/ 21 июня 2019

Я создаю случайное приложение чата 1: 1 в Flutter и Firebase.Я использую transaction для добавления пользователя в чат, потому что нужно избегать условия гонки более чем одного пользователя, добавляемого в чат.Чат должен быть 1: 1.

Мне нужна ошибка catch transaction, если transaction timeout.

Но ошибка ловится только на iOS (не Android).Только на iOS это ловит ошибку как показано:

PlatformException (9, Транзакция провалила все попытки. Каждый документ, прочитанный в транзакции, также должен быть записан в этой транзакции., Нуль)

На Android в режиме отладки приложение зависает и выдает ошибку в message_codecs.dart:

throw PlatformException (код: errorCode, сообщение: errorMessage, подробности: errorDetails);

Вот транзакция:

      Future<bool> addUser() async {

    try {
      await Firestore.instance.runTransaction((transaction) async {
        DocumentSnapshot chatRoomDocSnapshot =
            await transaction.get(chatRoomDocRef);
        bool userInChat = await chatRoomDocSnapshot[‘userInChat'];

        if (userInChat == false) {
            await transaction.update(chatRoomDocSnapshot.reference, {
              ‘userInChat': true,
            });
        }
      });

    await chatUserRef.setData({
      ‘User’: user,
    });

      userAdded = true;


    } catch (e) {
print(e);
      userAdded = false;
    }
    return userAdded;
      }

Я использую плагин cloud_firestore: ^0.12.5+1

Кто-нибудь видел эту проблему плагина?

Почему эта ошибка возникает только на Android?

Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...