Firebase 扑动火基流重启崩溃
我对stream和firebase有一个问题,当应用程序第一次启动时一切正常,当我尝试重新启动时,应用程序关闭并出现此错误,我不明白为什么。问题是水流 如果移除流,强制重新加载将正常工作Firebase 扑动火基流重启崩溃,firebase,flutter,Firebase,Flutter,我对stream和firebase有一个问题,当应用程序第一次启动时一切正常,当我尝试重新启动时,应用程序关闭并出现此错误,我不明白为什么。问题是水流 如果移除流,强制重新加载将正常工作 StreamBuilder( stream: FirebaseAuth.instance.userChanges(), builder: (ctx, userSnapshot) { if (userSnapshot.connectionState == Con
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.
StreamBuilder(
流:FirebaseAuth.instance.userChanges(),
生成器:(ctx,用户快照){
if(userSnapshot.connectionState==connectionState.waiting){
打印(“飞溅”);
返回屏幕();
}else if(userSnapshot.hasData){
返回WelcomeScreen();
}否则{
打印(“欢迎”);
返回WelcomeScreen();
}
});
在658ms内重新启动应用程序。
-[\uu NSCFString setStreamHandler:]:发送到实例0x28351260的选择器无法识别
***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[\uu NSCFString setStreamHandler:]:未识别的选择器已发送到实例0x28351260”
***第一次抛出调用堆栈:
(0x19c5e586c 0x1b15fec50 0x19c4ec95c 0x19c5e8438 0x19c5ea740 0x1045f56d4 0x1045f7af0 0x104606c88 0x1046049ac 0x104603928 0x1053f0694 0x104b90038 0x104e8f41c 0x104e2e81c 0x104e30ed4 0x19c561fa0 0x19c561ba0 0x19c560ffc 0x19c55aee4 0x19c55a21c 0x1b4124784 0x19EF9EE8 0xEFA0755C 0x1045F4B00C21A0)
libc++abi.dylib:以NSException类型的未捕获异常终止
*线程#1,队列='com.apple.main thread',停止原因=信号SIGABRT
帧0:0x00000001ca535414 libsystem\u kernel.dylib`\u pthread\u kill+8
libsystem\u kernel.dylib`\u pthread\u kill:
->0x1ca535414:b.lo 0x1ca535434;
0x1ca535418:pacibsp
0x1ca53541c:stp x29,x30,[sp,#-0x10]!
0x1ca535420:mov x29,sp
目标0:(跑步者)已停止。
如本文所述,您可以
firebase_auth
至^1.1.2
或者按照本期提供的步骤操作
但只要回到1.1.1,我就解决了这个问题强>
确保您的依赖项如下所示:
firebase_auth: 1.1.1
使用修补的
-[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();
}
-(作废)清理完成:(作废(^)(作废))完成{
//清理凭据。
[_凭据删除所有对象];
用于(自->\u eventChannels.allValues中的flatterEventChannel*通道){
[通道设置流处理器:无];
}
[self->_eventchannelsremoveallobjects];
for(self->\u streamHandlers.allValues中的NSObject*处理程序){
[handler onCancelWithArguments:nil];
}
[self->_streamhandlersremoveallobjects];
如果(完成!=nil)完成();
}
原始问题是由于在循环中对字典键进行迭代,但将它们用作值而导致的