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)

提前致谢。

stack overflow Flutter GetXController : "Unhandled Exception: '!isClosed': You cannot add event to closed Stream"
原文答案

答案:

作者头像

尝试在无状态小部件上声明控制器之后添加它:

controller.onInit();
作者头像

我自己从未使用过那个库,但我认为这会给你一些想法。

StreamController controller = ...;
if (!controller.isClosed) {
  controller.add(event); // Only add the event if the stream isn't closed. 
}
作者头像

您试图在控制器被处理后添加一个事件。控制器处置可能发生在小部件处置上。您需要跟踪该方法何时被调用。

作者头像

就在几分钟前,我遇到了类似的错误。并开始搜索错误。我找到了 this on GitHub 。这就是我的答案。

不确定它是否有帮助,但我有同样的问题,如果我在不使用热重载的情况下重新启动应用程序,问题就解决了。

作者头像

我猜这个特定问题没有具体的解决方法。我长期面临同样的问题。然后我发现,类中的其他函数抛出了一个 null 指针异常。在我使用的整个 RxList 之后,卡住了。因此,解决方案是,如果您遇到此类问题,请尝试找出另一行代码引发的错误。