交易成功时执行方法

时间:2019-03-14 16:30:11

标签: firebase dart google-cloud-platform flutter google-cloud-firestore

我正在Flutter和Firebase中构建随机的1:1聊天应用程序。

我使用transaction来添加用户聊天,因为必须避免将超过1位用户的比赛条件添加到聊天中。聊天必须为1:1。

如果只有一个用户在聊天中,那么我将在Firestore文档中使用布尔userInChat进行监视,因此可以将其他用户添加到聊天中。

如果交易成功,我会显示聊天屏幕。如果不是,则显示错误。我设置userAdded为布尔值。

我现在的解决方案是从事务超时抛出跟踪错误。因为根据我的理论,如果没有错误,那么必须成功完成交易。

但这只能在iOS上运行,而不能在Android上运行。 仅在iOS上,它会显示错误,如下所示:

  

PlatformException(9,事务所有重试均失败。,null)。

在Android上没有错误。

我正在使用插件cloud_firestore: ^0.9.5+2

我不知道为什么只能在iOS上运行。也许这是不正确的方法?我的代码有什么问题?正确的方法是什么?

感谢帮助!

  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) {
  userAdded = false;
}
return userAdded;
  }

更新:也许cloud_firestore插件有问题?因为只有在Android上才会出现此错误。

0 个答案:

没有答案