1 自定义路由过滤条件,GetMiddleware扩展子类的使用
/// 需要做登录校验的二次中转过滤路由
class LoginMiddleware extends GetMiddleware {
///
/// 中转页面跳转之前,判断一下用户的登录装台,如果没登,则将用户路由到登录页
@override
GetPage? onPageCalled(GetPage? page) {
Log.d("LoginMiddleware, page==${page?.name}");
if (false == isLogin()) {
todo sth here
return null;
}
return page;
}
}
GetMiddleware子类能够在GetX 路由事件被调用时,先按照过滤条件判断能否路由成功,如果想要拦截某些操作,GetMiddleware.onPageCalled 函数返回 null即可;
2 跨多个页面栈向后回退到指定的页面,如首页,执行回退时直接闪退
这里一般情况时目标页面的类型跟 RoutePage的类型不匹配,比如LoadingDialog对象没有消失, 使用一下类型转化,然后再执行路由.
/// 注销成功,则直接退回到APP的首页
Get.offUntil(GetPageRoute(page: () => TabBarPage()), (route) {
return (route is GetPageRoute) &&
Routes.ywHome == route.routeName;
});
3 路由地址中统一的二次拦截,需要使用到
GetMiddleware.redirect( String? route)