flutter跳转到首页并移除所有页面,类似Android的singleTop

问题描述:

在某篇文章详情页的时候,点击上面的栏目即返回到首页

如下图:
flutter跳转到首页并移除所有页面,类似Android的singleTop_第1张图片

当点击腾讯校园招聘的时候,这时候会pop掉之前的页面,然后移除所有,直接返回到首页。

之前的效果是这样子的,一直没有找到合适的解决方法,可能是自己写得有些急了吧。

flutter跳转到首页并移除所有页面,类似Android的singleTop_第2张图片

问题结局:

因为在flutter中用的路由是fluro,这个路由也是比较受欢迎的,轻量级的,网上搜了一圈,还是没有搜出这样的答案,于是不小心点进去了源码,发现里面的方法并没有几个,但是发现了下面几行代码:

  Future navigateTo(BuildContext context, String path,
      {bool replace = false,
      bool clearStack = false,
      TransitionType transition,
      Duration transitionDuration = const Duration(milliseconds: 250),
      RouteTransitionsBuilder transitionBuilder}) {
    RouteMatch routeMatch = matchRoute(context, path,
        transitionType: transition,
        transitionsBuilder: transitionBuilder,
        transitionDuration: transitionDuration);
    Route<dynamic> route = routeMatch.route;
    Completer completer = Completer();
    Future future = completer.future;
    if (routeMatch.matchType == RouteMatchType.nonVisual) {
      completer.complete("Non visual route type.");
    } else {
      if (route == null && notFoundHandler != null) {
        route = _notFoundRoute(context, path);
      }
      if (route != null) {
        if (clearStack) {
          future =
              Navigator.pushAndRemoveUntil(context, route, (check) => false);
        } else {
          future = replace
              ? Navigator.pushReplacement(context, route)
              : Navigator.push(context, route);
        }
        completer.complete();
      } else {
        String error = "No registered route was found to handle '$path'.";
        print(error);
        completer.completeError(RouteNotFoundException(error, path));
      }
    }

    return future;
  }

clearStack中发现调用的是flutter原生的Navigator.pushAndRemoveUntil(context, route, (check) => false);,原来这个cleanStack是个x参(用的时候直接clearStack:true/false),就括号里的意思

这时候我稍微改了下项目里的代码(注释掉的为之前的代码):

  void _jumpKaozhiMain() {
    Application.router.navigateTo(context, '${Routes.home}',clearStack: true,transition: TransitionType.fadeIn);
//    Application.router.navigateTo(context, "${Routes.home}",
//        transition: TransitionType.fadeIn);
  }

然后效果就是下面这样的

flutter跳转到首页并移除所有页面,类似Android的singleTop_第3张图片


更多资源请访问:

超详细图文搭建个人免费博客

关注「蛇崽网盘教程资源」公众号 ,在微信后台回复「领取资源」,获取IT资源200G干货大全。

在微信后台回复「130个小程序」,即可免费领取享有导入就能跑的微信小程序

在微信后台回复「Flutter移动电商」,即可免费领取Flutter移动电商系列全套
在这里插入图片描述

你可能感兴趣的:(Flutter开发)