如何解决Flutter GetXController :“未处理的异常:'!isClosed':您无法将事件添加到已关闭的流中”
几个小时以来,我一直在为这个问题苦苦挣扎。 BLoC 和 StreamController 有一些解决方案,但 GetX 没有合适的解决方案。
根据 BloC 的建议,我得到了一个想法,这可能与 GetXController dispose 有关。然后我在我初始化 user_controller 的页面中为控制器应用 dispose() 方法。但是还是出现如下错误
Unhandled Exception: 'package:get/get_rx/src/rx_stream/get_stream.dart': Failed assertion: line 90 pos 12: '!isClosed': You cannot add event to closed Stream
E/flutter (21576): #0 _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39)
E/flutter (21576): #1 _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
E/flutter (21576): #2 GetStream.add (package:get/get_rx/src/rx_stream/get_stream.dart:90:12)
E/flutter (21576): #3 NotifyManager.addListener.<anonymous closure> (package:get/get_rx/src/rx_types/rx_core/rx_impl.dart:139:15)
E/flutter (21576): #4 GetStream._notifyData (package:get/get_rx/src/rx_stream/get_stream.dart:47:21)
E/flutter (21576): #5 GetStream.add (package:get/get_rx/src/rx_stream/get_stream.dart:92:5)
E/flutter (21576): #6 RxObjectMixin.value= (package:get/get_rx/src/rx_types/rx_core/rx_impl.dart:101:13)
E/flutter (21576): #7 UserController.getUserData (package:hellobabybox/controllers/user_controller.dart:20:12)
提前致谢
解决方法
您正尝试在控制器处理完毕后添加事件。控制器处置可以发生在小部件处置上。您需要跟踪该方法何时被调用。
,尝试在无状态小部件上的控制器声明之后添加它:
controller.onInit();
,
我自己从未使用过那个库,但我想这会给你一些想法。
StreamController controller = ...;
if (!controller.isClosed) {
controller.sink.add(event); // Only add the event if the stream isn't closed.
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。