Flutter中UserCubit无法监听AuthBloc的问题求助
Flutter中UserCubit无法监听AuthBloc的问题求助
大家好!我最近在开发一个采用BLoC模式+Clean架构的Flutter应用,同时用依赖注入来管理各类服务。目前我写了一个AuthBloc专门处理用户认证逻辑,它会发出AuthResult状态来标识用户是登录还是未登录状态。另外我还有个UserCubit,本来想让它监听AuthBloc的状态变化——比如用户登录成功后自动拉取用户信息,退出登录时清空本地用户数据,但现在遇到了头疼的问题:UserCubit完全监听不到AuthBloc的状态更新!
我先说说我的实现思路,看看有没有哪里疏漏:
- 我在依赖注入容器里把
AuthBloc和UserCubit都注册成了单例,确保整个应用内是同一个实例 - 尝试在
UserCubit的构造函数里直接传入AuthBloc实例,然后订阅它的流:
class UserCubit extends Cubit<UserState> { final AuthBloc _authBloc; late StreamSubscription _authSubscription; UserCubit(this._authBloc) : super(UserInitial()) { _authSubscription = _authBloc.stream.listen((authState) { print("Auth状态变化了:$authState"); // 这里根本没打印过! if (authState is AuthSuccess) { _fetchUserDetail(authState.userId); } else if (authState is AuthLoggedOut) { emit(UserLoggedOut()); } }); } @override Future<void> close() { _authSubscription.cancel(); return super.close(); } void _fetchUserDetail(String userId) async { // 调用用户服务获取详情的逻辑 try { final user = await UserRepository().getUserById(userId); emit(UserLoaded(user)); } catch (e) { emit(UserError(e.toString())); } } }
- 我试过在UI层用
BlocListener监听AuthBloc,是能收到状态变化的,但我更希望把这种业务逻辑放在Cubit内部处理,不想耦合到UI里
我检查过依赖注入的代码,确认UserCubit拿到的AuthBloc和UI层用的是同一个实例,而且AuthBloc确实在正确发出状态(UI层能收到),但就是UserCubit里的监听回调完全没触发。有没有大佬遇到过类似的问题?或者能帮我看看哪里考虑漏了吗?
备注:内容来源于stack exchange,提问作者es_amit
相关产品推荐
相关产品推荐

