我正在使用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,
});