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被调用,但是功能不会生效

相关推荐
蒋星熠10 小时前
Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
开发语言·python·算法·flutter·设计模式·性能优化·硬件工程
卢叁13 小时前
Flutter之自定义TabIndicator
前端·flutter
萧雾宇14 小时前
Android Compose打造仿现实逼真的烟花特效
android·flutter·kotlin
拜无忧15 小时前
【教程】flutter常用知识点总结-针对小白
android·flutter·android studio
拜无忧16 小时前
【教程】Flutter 高性能项目架构创建指南:从入门到高性能架构
android·flutter·android studio
醉过才知酒浓16 小时前
flutter 拦截返回按钮的方法(WillPopScope or PopScope)
flutter
傅里叶18 小时前
sudo启动Flutter程序AMD初始化失败
linux·flutter
苦逼的搬砖工19 小时前
Flutter UI Components:闲来无事,设计整理了这几年来使用的UI组件库
前端·flutter
黑金IT20 小时前
Dart → `.exe`:Flutter 桌面与纯命令行双轨编译完全指南
flutter
iOS_MingXing21 小时前
flutter TabBar 设置isScrollable 第一个有间距
flutter