GetX 框架设计中的亮点小节

451 阅读1分钟
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)