Flutter GetXController: «Необработанное исключение: '! IsClosed': вы не можете добавить событие в закрытый поток»

Пару часов я боролся с этим вопросом. Есть некоторые решения для BLoC и StreamController, но нет подходящего решения для GetX.

Как их предложение из ответа BloC, я подумал, что это может быть связано с удалением GetXController . Затем я применяю метод dispose () для контроллера на своей странице, где я инициализировал user_controller. Но все еще есть ошибка, как показано ниже

      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)

Заранее спасибо

5 ответов

Попробуйте добавить это сразу после объявления контроллера в виджете без состояния:

      controller.onInit();

Вы пытаетесь добавить событие после того, как контроллер был удален. Удаление контроллера может произойти при удалении виджета. Вам нужно отслеживать, когда вызывается этот метод.

У меня была аналогичная ошибка всего несколько минут назад. И начал искать ошибку. Я нашел это на GitHub . Это был ответ для меня.

Не уверен, что это помогает, но у меня такая же проблема, и проблема решается, если я перезапускаю приложение без горячей перезагрузки.

Я думаю, что нет конкретного решения для этой конкретной проблемы. Я долго сталкивался с той же проблемой. Потом я узнаю, что было исключение указателя, вызванное какой-либо другой функцией внутри класса. и после всего этого что я использовал, воткнул. Итак, решение заключается в том, что если вы столкнулись с такой проблемой, попробуйте выяснить ошибку, вызванную другой строкой кода.

Я сам никогда не использовал эту библиотеку, но думаю, это даст вам некоторое представление.

      StreamController controller = ...;
if (!controller.isClosed) {
  controller.sink.add(event); // Only add the event if the stream isn't closed. 
}
Другие вопросы по тегам