通知页面的跳转会跳转到视频详情页
来源:1-2 课程导学

光_cfstOQ
2025-07-20
这个是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();
})
);
}这里用到了,我想问为什么这里要这样设置,这个视频详情页面为什么要单独拎出来这样注册?
1回答
-
CrazyCodeBoy
2025-07-20
1.详情页需要传递视频模型所以单独做了处理。
2.看描述问题大概出在路由处理上,可以参考下这个路由的设置https://git.imooc.com/coding-487/fa-profile/src/master/lib/main.dart#L97012025-07-21
相似问题