如何使 getx 颤振以移动到下一个中​​间件

Posted

技术标签:

【中文标题】如何使 getx 颤振以移动到下一个中​​间件【英文标题】:how to make getx flutter to move to the next middleware 【发布时间】:2021-09-21 19:28:25 【问题描述】:

您好,我正在使用 getx 颤振中间件。关于将中间件列表提供给页面。如何确认一个中间件的结束,以便 getx 可以移动到下一个。

例如:首页有两个中间件 1. 第一个中页 2. 第二个中页 在调用主页时,应用程序将重定向到第一个中页。现在在第一个中页完成我的任务后,我如何要求应用重定向到第二个中页。

【问题讨论】:

【参考方案1】:

main.dart

routingCallback:
      Get.find<AppService>(tag: Const.appService).routRecord,

app_service.dart

String rout = "";

void routRecord(Routing? r) 
  if (r != null) 
    if (r.current == Routes.HOME) 
      rout = Routes.HOME;
     else if (r.isBack ?? false) 
      final pos = rout.lastIndexOf('/');
      rout = (pos != -1) ? rout.substring(0, pos) : rout;
     else if (r.current != "") 
      rout = rout + r.current;
    
  

我有一个在 rout 中打开的页面路径。 即:家庭/用户/个人资料 我可以很容易地知道我在哪里,并且可以很容易地转到另一个页面。

即:app_service.dart

  void _appListener() async 
    ReceiveSharingIntent.getTextStream().listen((String value) 
      _openPlayer(value);
    , onError: (err) 
      Message.show("Error", "Something went wrong");
    );
 
    await ReceiveSharingIntent.getInitialText().then((value) 
      if (value != null) _openPlayer(value);
    );
  

  _openPlayer(String url) async 
    final id = YoutubePlayerController.convertUrlToId(url);
    if (id != null) 
      final _routStack = rout.split('/');
      final playerIndex = _routStack
          .indexWhere((element) => element == Routes.PLAYER.substring(1));

      if (playerIndex == -1) 
        Get.toNamed(Routes.PLAYER, arguments: [
          id,
          (await FetchDetails.getDetail(id))?["title"] ?? "",
        ]);
       else 
        final backCount = _routStack.length - playerIndex;
        for (int i = 0; i < backCount; i++) 
          Get.back();
        
        Get.toNamed(Routes.PLAYER, arguments: [
          id,
          (await FetchDetails.getDetail(id))?["title"] ?? "",
        ]);
      
     else 
      Message.show("Error", "invalid url");
    
  

【讨论】:

以上是关于如何使 getx 颤振以移动到下一个中​​间件的主要内容,如果未能解决你的问题,请参考以下文章

在颤振中如何使带有平移手势的内部小部件不会与PageView冲突

如何防止用户在颤动中使用 getX 倒退

如何使用angularjs变量使超链接移动到下一页?

铸造模型不适用于 getX 颤振

如何在Matlab的for循环中移动到下一个迭代

如何使用 GetX 包管理 Flutter Web URL 路由?