首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >颤振web : getx中间件和路由参数(GetX example_nav2)

颤振web : getx中间件和路由参数(GetX example_nav2)
EN

Stack Overflow用户
提问于 2022-05-23 13:26:47
回答 1查看 775关注 0票数 2

https://github.com/jonataslaw/getx/tree/master/example_nav2

  1. Getx example_nav2 example_nav2

我的app_pages.dart

代码语言:javascript
运行
复制
            GetPage(
            preventDuplicates: true,
            name: _Paths.sRoot,
            page: () => const SellerDashBoardRootView(),
            binding: SellerDashBoardRootViewBinding(),
            middlewares: [
              //only enter this route when user is a seller
              EnsureAuthSeller()
            ],
            children: [

              GetPage(
                name: _Paths.sellerDashboard,
                page: () => const SellerDashboardScreen(),
                binding: SellerDashboardBinding(),
                transition: Transition.fadeIn),

              GetPage(
                preventDuplicates: true,
                name: _Paths.sProductsRoot,
                page: () => const SellerProductsRootView(),
                binding: SellerProductsRootViewBinding(),
                transition: Transition.fadeIn,
              ),

              GetPage(
                name: _Paths.sellerProducts,
                page: () => const SellerProductsScreen(),
                binding: SellerProductsBinding(),
                transition: Transition.fadeIn,
                children: [

                  GetPage(
                  name: _Paths.sellerAddProduct,
                  page: () => const SellerAddProductScreen(),
                  binding: SellerAddProductBinding(),
                  transition: Transition.fadeIn),

                  GetPage(
                  name: _Paths.sellerStock,
                  page: () => const SellerStockScreen(),
                  binding: SellerStockBinding(),
                  transition: Transition.fadeIn),

                 ],
               ),
             ]
           )

  1. EnsureAuthSeller (GetMiddleware)

代码语言:javascript
运行
复制
class EnsureAuthSeller extends GetMiddleware {
  @override
  Future<GetNavConfig?> redirectDelegate(GetNavConfig route) async {
    if (!AuthService().isLogin) {
      return null;
    } else {
      var role = await LocalStorageServices().getUserRole(keyRole);
      if (role != "seller") {
        return null;
      }
      if (role == "seller") {
        return GetNavConfig.fromRoute(route.location!);
      }
    }
    return await super.redirectDelegate(route);
  }
}

将参数从Routes.sellerAddProduct传递给Routes.sellerProducts的

Routes.sellerProducts:

代码语言:javascript
运行
复制
Map<String, String> productDetails = {"productInfos":"test"};

Get.rootDelegate.toNamed(Routes.sellerAddProduct, arguments: productDetails);

Routes.sellerAddProduct:

代码语言:javascript
运行
复制
final productDetails = Get.rootDelegate.arguments();
print("result = $productDetails");

  1. Result

不包括{"productInfos":"test"} ( EnsureAuthSeller (GetMiddleware) => =>)

使用EnsureAuthSeller (GetMiddleware) => =>= null

为什么?最好的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-27 08:20:22

您只使用这个位置创建一个新的GetNavConfig。您应该只从参数返回现有的GetNavConfig

代码语言:javascript
运行
复制
if (role == "seller") {
    return route;
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72349392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档