等待屏幕,直到将文档添加到Firestore子集合中?

时间:2019-01-05 17:32:29

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

我正在使用Flutter和Firestore制作随机聊天应用程序。

当第一个用户想要聊天时,我想显示等待屏幕(CircularProgressIndicator)。当第二个用户加入聊天时,我要显示主聊天屏幕。

但是如何使客户端应用程序连续监听user2加入?基于我的Firestore模式,它必须侦听user2加入/roomUsers子集合(将user2添加为文档名称UID)。该子集合已经有第一位用户的数据,因此,如果子集合具有数据,就不能仅仅侦听。

@jurrdb已将此代码发布在stackoverflow上:

class MyScreen extends StatefulWidget {

  @override
  _MyScreenState createState() => _MyScreenState();
}

class _MyScreenState extends State<MyScreen> {
  Widget _screen;

  @override
  void initState() {
    _screen = CircularProgressIndicator();

    _doSomeFirebaseChecking();
  }

  void _doSomeFirebaseChecking() async {
    // Add your code that performs checks at Firebase here.

    // Then use setState to update the widget to a screen of choice.
    setState(() {

    });
  }
}

我正在尝试使用此模型,但不知道如何使客户端应用程序连续检查Firestore子集合。

我尝试从/roomUsers子集合中获取文档,并检查是否documentSnapshot.length > 1,但是它只运行一次,因此当user2加入聊天室时不会更新。

该如何解决?我正在尝试streambuilder / futurebuilder,但没有解决。

谢谢!

更新:在这里,我如何将“用户文档”写入roomUsers子集合:

roomUsersRef = Firestore.instance.collection(‘chats').document(docID).collection(‘roomUsers').document(uid);
await roomUsersRef.setData({
  ‘user2UID': uid,
});

0 个答案:

没有答案