如何通过 pushReplacement 为替换的 widget 提供 bloc?

How to provide bloc to replaced widget through pushReplacement?

我有一个像这样的 parent stless 小部件,

class LoginScreen extends StatelessWidget {
    
   final AuthRepository authRepository = AuthRepository(AuthApiClient());
    
   @override
   Widget build(BuildContext context) {
      return BlocProvider(
          create: (BuildContext context) {
            return LoginBloc(Idle(), authRepository);
          },
          child: LoginWithEmailIdScreen(),
      );
   }
}

我可以很好地访问 LoginWithEmailIdScreen 中的 bloc,但是当我用另一个屏幕 (LoginWithMobileNumberScreen) 替换 LoginWithEmailIdScreen 时,bloc 实例似乎是空。
在 LoginWithEmailIdScreen 内部:

Navigator.pushReplacement(
   context,
   MaterialPageRoute(
      builder: (_) => BlocProvider.value(
         value: BlocProvider.of<LoginBloc>(context),
         child: LoginWithMobileNumberScreen(),
      )
   )
);

以为是使用了错误的上下文,所以用_替换了它,但仍然是同样的问题。

如何提供bloc实例?

非常感谢您的帮助,因为我是 Flutter 的新手。谢谢。

我找不到不使用路由的情况下通过 pushReplacement 提供 bloc 的好方法。

不得不重构整个项目并实现路由以使用命名替代方案:

Navigator.of(context).pushNamedAndRemoveUntil(
                  Routes.LOGIN_WITH_MOBILE_SCREEN,
                  (Route<dynamic> route) => false);

并在 onGenerateRoute.

中通过集团和管理