关于 Navigator 导航框架

来源:5-7 基于全新Navigator封装易用的导航框架(二)

这个人有点冷

2021-10-01

所有的路由逻辑都在 BiliRouterDelegate build 中,那如果不光这几个页面,多达100个呢?

if (routeStatus == RouteStatus.home) {
      // 跳转首页时将其它页面进行出栈
      // 清空堆栈
      pages.clear();
      // 创建首页
      page = pagePack(HomePage(
        onJumpToDetail: (articleModel) {
          this.articleModel = articleModel;
          notifyListeners(); // 通知 Router 重建 RouterDelegate(通过 build() 方法)
        },
      ));
    } else if (routeStatus == RouteStatus.detail) {
      page = pagePack(DetailPage(articleModel: articleModel!));
    } else if (routeStatus == RouteStatus.login) {
      page = pagePack(LoginPage());
    } else if (routeStatus == RouteStatus.register) {
      page = pagePack(RegisterPage());
    } else if (routeStatus == RouteStatus.splash) {
      page = pagePack(SplashPage());
    }
RouteStatus getStatus(MaterialPage page) {
  if (page.child is SplashPage) {
    return RouteStatus.splash;
  } else if (page.child is HomePage) {
    return RouteStatus.home;
  } else if (page.child is LoginPage) {
    return RouteStatus.login;
  } else if (page.child is RegisterPage) {
    return RouteStatus.register;
  } else if (page.child is DetailPage) {
    return RouteStatus.detail;
  } else {
    return RouteStatus.unknown;
  }
}

类似这种代码就会越来越多。
这种问题怎么解决呢?

写回答

2回答

CrazyCodeBoy

2021-10-09

是的。

0
0

CrazyCodeBoy

2021-10-08

对于只需要简单跳转的页面可以直接push,不用配置在这里哦。

0
1
这个人有点冷
意思是需要传递参数的页面就用框架跳转,然后其它的就直接通过命名路由跳转吗?
2021-10-08
共1条回复

Flutter高级进阶实战-仿哔哩哔哩-掌握Flutter高阶技能

一次性掌握Flutter高阶技能+商业级复杂项目架构设计与开发方案

1722 学习 · 870 问题

查看课程