我如何处理或关闭 Firestore 的监听功能?
How can i dispose or close a listen function from Firestore?
颤动
我在 stful
中有这个监听功能,我需要在按下后退按钮时关闭它
class Test extends StatefulWidget {
const Test({Key key}) : super(key: key);
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
handleDelete(){
FirebaseFirestore.instance.collection("handleCountM").limit(1).snapshots().listen((value) {
value.docs.forEach((element) {
element.reference.delete();
});
});
}
@override
Widget build(BuildContext context) {
return Container();
}
}
我不知道我怎么能阻止它进入dispose()
listen()
方法 returns 取消订阅的 StreamSubscription
which has a cancel()
方法。调用此方法后,订阅不再接收事件。
看看这个 article 它展示了如何:
- 将
StreamSubscription
对象存储在状态中,以便能够在处置时取消订阅。
- 调用
dispose()
中的cancel()
方法
Stream<QuerySnapshot<Map<String, dynamic>>> myStream = FirebaseFirestore.instance.collection("handleCountM").limit(1).snapshots();
late StreamSubscription<QuerySnapshot<Map<String, dynamic>>> streamSubscription;
void handleDelete() {
streamSubscription = myStream.listen((value) {
value.docs.forEach((element) {
element.reference.delete();
});
});
}
@override
void dispose() {
streamSubscription.cancel(); //Cancel your subscription here.
super.dispose();
}
您的另一种选择是使用 streambuilder,它将为您处理订阅和终止。
颤动
我在 stful
中有这个监听功能,我需要在按下后退按钮时关闭它
class Test extends StatefulWidget {
const Test({Key key}) : super(key: key);
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
handleDelete(){
FirebaseFirestore.instance.collection("handleCountM").limit(1).snapshots().listen((value) {
value.docs.forEach((element) {
element.reference.delete();
});
});
}
@override
Widget build(BuildContext context) {
return Container();
}
}
我不知道我怎么能阻止它进入dispose()
listen()
方法 returns 取消订阅的 StreamSubscription
which has a cancel()
方法。调用此方法后,订阅不再接收事件。
看看这个 article 它展示了如何:
- 将
StreamSubscription
对象存储在状态中,以便能够在处置时取消订阅。 - 调用
dispose()
中的cancel()
方法
Stream<QuerySnapshot<Map<String, dynamic>>> myStream = FirebaseFirestore.instance.collection("handleCountM").limit(1).snapshots();
late StreamSubscription<QuerySnapshot<Map<String, dynamic>>> streamSubscription;
void handleDelete() {
streamSubscription = myStream.listen((value) {
value.docs.forEach((element) {
element.reference.delete();
});
});
}
@override
void dispose() {
streamSubscription.cancel(); //Cancel your subscription here.
super.dispose();
}
您的另一种选择是使用 streambuilder,它将为您处理订阅和终止。