flutter Get GetMiddleware 中间件不起作用问题

当使用 get: ^5.0.0-release-candidate-9.2.1最新版本时,中间件GetMiddleware各种教程都是让我们在redirect中实现,比如:

复制代码
  @override
  RouteSettings? redirect(String? route) {
    return RouteSettings(name: "/companyAuthIndexPage");
  }

这个在之前版本是没有问题的,但是更新到最新版后,就无法生效了,查阅了官方后,得到了答案如下:

所有正确的姿势是:

复制代码
  @override
  FutureOr<RouteDecoder?> redirectDelegate(RouteDecoder route) {
    return RouteDecoder.fromRoute("/companyAuthIndexPage");
  }

当然作为合格的码农,怎么会止步于此,看了源代码后,发现不能生效的的代码如下:

复制代码
 bool needRecheck(BuildContext context) {
    if (settings == null && route != null) {
      settings = route;
    }
    final match = context.delegate.matchRoute(settings!.name!);

    // No Match found
    if (match.route == null) {
      isUnknown = true;
      return false;
    }

    // No middlewares found return match.
    if (match.route!.middlewares.isEmpty) {
      return false;
    }

    final runner = MiddlewareRunner(match.route!.middlewares);
    route = runner.runOnPageCalled(match.route);
    addPageParameter(route!);

    final newSettings = runner.runRedirect(settings!.name);
    if (newSettings == null) {
      return false;
    }
    settings = newSettings;
    return true;
  }

关键在于赋值后的settings没有正常下发,所以即使redirect被调用,但是功能不会生效

相关推荐
Wakeup40 分钟前
当Flutter下载依赖慢,运行在Android上卡Running Gradle task ‘assembleDebug...解决方法
flutter
你听得到112 小时前
告别重复造轮子!我从 0 到 1 封装一个搞定全场景的弹窗库!
前端·flutter·性能优化
恋猫de小郭12 小时前
Flutter 3.35 发布,快来看看有什么更新吧
android·前端·flutter
w_y_fan20 小时前
flutter_riverpod: ^2.6.1 应用笔记 (一)
前端·flutter
耳東陳125121 小时前
【重磅发布】flutter_chen_azlist - A–Z索引列表
flutter
tangweiguo030519871 天前
面向对象编程三剑客:Dart、Java 和 Kotlin 的核心区别
android·flutter·kotlin
叽哥1 天前
flutter学习第 17 节:项目实战:综合应用开发(下)
android·flutter·ios
叽哥1 天前
flutter学习第 16 节:项目实战:综合应用开发(上)
android·flutter·ios
月伤592 天前
Flutter屏幕和字体适配(ScreenUtil)
flutter
叽哥2 天前
flutter学习第 14 节:动画与过渡效果
android·flutter·ios