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

相关推荐
hongkid15 小时前
windows 搭建flutter环境,开发windows程序
windows·flutter
pengyu20 小时前
系统化掌握Dart编程之面向对象的抽象类及混入
android·flutter·dart
problc2 天前
使用 Charles 调试 Flutter 应用中的 Dio 网络请求
网络·flutter
~央千澈~2 天前
flutter开发-figma交互设计图可以转换为flutter源代码-如何将设计图转换为flutter源代码-优雅草央千澈
flutter·figma2flutter
ReyZhang2 天前
flutter 安卓端打包
android·flutter
ReyZhang2 天前
flutter VoidCallBack ValueChange<T> 的函数定义
flutter
玫瑰花开一片一片2 天前
flutter IOS 打包出现证书警告 找不到签名,找不到 ID
flutter·ios
捡芝麻丢西瓜3 天前
flutter自学笔记8- package、插件、主题、国际化
flutter·dart
卡尔特斯3 天前
Flutter 常用滚动组件使用场景
flutter