Я пытаюсь сделать чат с помощью firestore, а экран чата иногда не открывался. Я передал поток как параметр и использовал построитель потоков в chatScreen. Я получил bad state error: cannot add new events after calling close
, когда я попытался инициализировать поток в самом виджете.
Не знаю, где я ошибаюсь.
Вот мой код:
ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, pos){
var name = snapshot.data.documents[pos]["Name"];
var email = snapshot.data.documents[pos].documentID;
Stream snappy = Firestore.instance.collection("chat-server")
.document(email).collection("messages").orderBy("time").snapshots();
return GestureDetector(
onTap: (){
Navigator.push(context,
new MaterialPageRoute(builder: (context) =>ChatScreen(name,email,snappy)));
},
child: ...
),
}
)
А мой чат-экран выглядит так:
Widget build(BuildContext context) {
Firestore.instance.collection("chat-server")
.document(widget.email)
.updateData(....);
return StreamBuilder(
stream: widget.test,
builder: (context, snapshot) {
if(!snapshot.hasData || snapshot.hasError || snapshot.connectionState == ConnectionState.waiting){
return Expanded(
child: Center(
child: Container(
width: ScreenUtil().setWidth(20),
height: ScreenUtil().setHeight(20),
child: CircularProgressIndicator()
),
)
);
} else
return MyWidget();
}
);