这个是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();
})
);
}这里用到了,我想问为什么这里要这样设置,这个视频详情页面为什么要单独拎出来这样注册?
一次性掌握Flutter高阶技能+商业级复杂项目架构设计与开发方案
了解课程