请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

通知页面的跳转会跳转到视频详情页

这个是homepage的通知的图标的onTap的代码 Icon(
Icons.explore_outlined,
color: Colors.grey,
),
InkWell(
onTap: () {
print(‘hi_navigator:跳转通知${RouteStatus.notice}’);
HiNavigator.getInstance().onJumpTo(RouteStatus.notice);
},
child: Padding(
padding: EdgeInsets.only(left: 12),
child: Icon(
Icons.mail_outline,
color: Colors.grey,
),
),
然后在hi_navigator中进行了扩充RouteStatus getStatus(MaterialPage page){
if(page.child is LoginPage){
return RouteStatus.login;
}else if(page.child is RegistrationPage){
return RouteStatus.registration;
}else if(page.child is BottomNavigator){
return RouteStatus.home;
}else if(page.child is VideoDetailPage){
return RouteStatus.detail;
}else if(page.child is NoicePage){
return RouteStatus.notice;
}else{
return RouteStatus.unknown;
}
}, 但是问题来了:首次打开程序,点击这个Icon,跳转的是NoicePage图片描述但是此时屏幕是全黑的,我的NoicePage是有数据的,不至于全黑,
然后我手势滑动页面 返回首页,如果不点击其他页面,每次按这个图标 都是进入NoicePage,但是页面是全黑的,这个时候就直接跳入RouteStatus.detail;这个页面,并且从此以后每次按这个图标 都是进入视频详情页RouteStatus.detail;图片描述这是为什么?
另外还想问一个问题: /// 注册路由跳转处理器
/// - routeJumpListener: 实现了路由跳转逻辑的监听器
void registerRouteJump(RouteJumpListener routeJumpListener){
this._routeJump = routeJumpListener;
}这个是hi_navigator里面的注册路由跳转处理器 但是我看了老师的代码里 只有main.dart里面 // 路由表 为Navigator设置一个Key,必要的时候可以通过navigatorKey.currentState来获取NavigatorState对象
BiliRouteDelegate():navigatorKey = GlobalKey()
{
//实现路由跳转逻辑
HiNavigator.getInstance().registerRouteJump
(RouteJumpListener(onJumpTo: (RouteStatus routeStatus,{Map? args})
{
_routeStatus = routeStatus;
if(routeStatus == RouteStatus.detail)
{
this.videoModel = args![‘videoModel’];

    }
    notifyListeners();
  })
);

}这里用到了,我想问为什么这里要这样设置,这个视频详情页面为什么要单独拎出来这样注册?

正在回答 回答被采纳积分+3

1回答

CrazyCodeBoy 2025-07-20 21:28:22
1.详情页需要传递视频模型所以单独做了处理。
2.看描述问题大概出在路由处理上,可以参考下这个路由的设置https://git.imooc.com/coding-487/fa-profile/src/master/lib/main.dart#L97
0 回复 有任何疑惑可以回复我~
  • 提问者 光_cfstOQ #1
    我看了我的路由设置    }
        //创建我们要创建的页面
        var page ;
        if(routeStatus == RouteStatus.home)
        {
          //跳转首页时将栈中其他页面进行出栈,因为首页不可回退
          pages.clear();
          page = pageWrap(BottomNavigator());
        }else if(routeStatus == RouteStatus.detail)
        { 
          page = pageWrap(VideoDetailPage(videoModel!));
    
        }else if(routeStatus == RouteStatus.registration)
        {
          page = pageWrap(RegistrationPage());
        }else if(routeStatus == RouteStatus.login)
        {
          page = pageWrap(LoginPage());
        }else if(routeStatus == RouteStatus.notice)
        {
          page = pageWrap(NoicePage());
        }
    是有设置noicepage的 然后在没有点开视频详情页的时候 确实能进入Noicepage,现在的问题是 我一旦点开了视频详情页,再次点击Noice图标 进去的就成了视频详情页,routeStatus == RouteStatus.detail ,进不了notice的页面,如果我是进入首页、排行榜、收藏、我的,这4个路由页面,再次点击Noice图标 是可以进入的,
    回复 有任何疑惑可以回复我~ 2025-07-21 09:51:47
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号