Flutter跳转DashboardPage报错找不到对应DashboardBloc Provider求助
问题根因
你当前的跳转逻辑直接通过MaterialPageRoute实例化DashboardPage,没有走你预先配置的Fluro路由规则,因此dashboardHandler中定义的BlocProvider<DashboardBloc>没有被注入到组件树中,导致DashboardPage无法找到上层的DashboardBloc实例。
解决方案
推荐优先复用你已经写好的路由配置,修改所有跳转DashboardPage的逻辑即可:
步骤1:替换跳转代码
将AuthPage中两处跳转DashboardPage的代码:
Navigator.push( context, MaterialPageRoute(builder: (context) => DashboardPage()), );
统一替换为Fluro的路由跳转写法:
// 需先导入你定义router实例的文件 router.navigateTo(context, DashboardPage.routeName);
如果认证完成后不希望用户可以退回认证页,可以加replace参数销毁当前页面:
router.navigateTo(context, DashboardPage.routeName, replace: true);
步骤2:检查根路由配置
确认你的根MaterialApp已经配置了Fluro的路由生成器,确保路由规则可以生效:
MaterialApp( // 其他配置项 onGenerateRoute: router.generator, )
备选方案(不推荐)
如果你不想走Fluro路由跳转,也可以在直接跳转时手动注入DashboardBloc,但会和你已有的路由配置逻辑重复:
Navigator.push( context, MaterialPageRoute(builder: (context) => BlocProvider<DashboardBloc>( create: (_) => DashboardBloc(accountRepository: accountRepository), child: DashboardPage(), )), );
内容的提问来源于stack exchange,提问作者user16560224
相关产品推荐
相关产品推荐

