Сбой перезапуска потока Flutter firebase

# #firebase #flutter

Вопрос:

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

 StreamBuilder(
        stream: FirebaseAuth.instance.userChanges(),
        builder: (ctx, userSnapshot) {
          if (userSnapshot.connectionState == ConnectionState.waiting) {
            print("SPLASH");
            return SplashScreen();
          } else if (userSnapshot.hasData) {
            return WelcomeScreen();
          } else {
            print("WELCOME");
            return WelcomeScreen();
          }
        });



Restarted application in 658ms.
-[__NSCFString setStreamHandler:]: unrecognized selector sent to instance 0x283512620
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString setStreamHandler:]: unrecognized selector sent to instance 0x283512620'
*** First throw call stack:
(0x19c5e586c 0x1b15fec50 0x19c4ec95c 0x19c5e8438 0x19c5ea740 0x1045f56d4 0x1045f7af0 0x104606c88 0x1046049ac 0x104603928 0x1053f0694 0x104b90038 0x104e8f41c 0x104e2e81c 0x104e30ed4 0x19c561fa0 0x19c561ba0 0x19c560ffc 0x19c55aee4 0x19c55a21c 0x1b4124784 0x19ef9aee8 0x19efa075c 0x1045f44b0 0x19c21a6b0)
libc  abi.dylib: terminating with uncaught exception of type NSException
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x00000001ca535414 libsystem_kernel.dylib`__pthread_kill   8
libsystem_kernel.dylib`__pthread_kill:
->  0x1ca535414 < 8>:  b.lo   0x1ca535434               ; < 40>
    0x1ca535418 < 12>: pacibsp
    0x1ca53541c < 16>: stp    x29, x30, [sp, #-0x10]!
    0x1ca535420 < 20>: mov    x29, sp
Target 0: (Runner) stopped.
 

Ответ №1:

Как указано в этом выпуске, вы можете либо вернуться

 firebase_auth
 

к ^1.1.2
или выполните действия, описанные в этом выпуске.

Но просто возврат к 1.1.1 исправил проблему для меня!

Убедитесь, что у вас есть такие зависимости:

 firebase_auth: 1.1.1
 

Ответ №2:

Сбой исчез для меня с исправленным -[FLTFirebaseAuthPlugin cleanupWithCompletion:] методом:

 
- (void)cleanupWithCompletion:(void (^)(void))completion {
  // Cleanup credentials.
  [_credentials removeAllObjects];

  for (FlutterEventChannel *channel in self->_eventChannels.allValues) {
    [channel setStreamHandler:nil];
  }
  [self->_eventChannels removeAllObjects];
  for (NSObject<FlutterStreamHandler> *handler in self->_streamHandlers.allValues) {
    [handler onCancelWithArguments:nil];
  }
  [self->_streamHandlers removeAllObjects];

  if (completion != nil) completion();
}
 

Первоначальная проблема вызвана for..in циклом, который повторялся по ключам словаря, но использовал их в качестве значений.