当前位置: 首页 > 知识库问答 >
问题:

flutter Get.toNamed同个页面不跳转时什么原因呢?

居和顺
2024-06-19

flutter项目中使用GetX作为路由管理,我一般都是使用Get.toNamed('/xxx')作为跳转,但是最近发现了一个尴尬的事情。
新闻列表页:

InkWell(  onTap: () {     Get.toNamed('/detail', arguments: {'id': 1});  },  child: Text('这是第一篇新闻的标题')),

在新闻1的页面中用arguments['id']去服务器请求数据,这一切没问题。
但是如果在新闻1页面中想实现【下一篇:这是第二篇新闻的标题】时,使用以下代码:

InkWell(  onTap: () {     Get.toNamed('/detail', arguments: {'id': 2});  },  child: Text('这是第二篇新闻的标题')),

页面不跳转页不报错,请问大家有类似的情况吗?

我尝试过把
Get.toNamed('/detail', arguments: {'id': 1});
换成
Get.to(() => Detail(), arguments: {'id': 1});
在第一层有用,后面就没有。
也就是说,从列表跳到新闻1页面,再从新闻1页面跳到其它新闻页时有用,比如跳到新闻2页面。但是从新闻2页面要调到其他新闻页面则没用,不跳转页不报错。

共有2个答案

淳于泓
2024-06-19

Get.toNamed('/detail', arguments: {'id': 1},preventDuplicates = false);

乐正玺
2024-06-19

在使用 GetX 作为 Flutter 项目的路由管理时,如果 Get.toNamed('/detail', arguments: {'id': 2}); 没有实现页面跳转并且没有报错,可能的原因如下:

  1. 路由配置问题:确保你在 GetMaterialAppGet.put() 中正确配置了 /detail 路由。如果没有正确配置,Get.toNamed 将无法找到对应的页面进行跳转。
  2. 页面状态保持:由于 GetX 支持页面状态的保持,当第二次调用 Get.toNamed 时,如果目标页面已经在路由栈中,GetX 默认不会创建新的页面实例,而是复用已存在的页面实例。如果页面逻辑依赖于通过 arguments 传递的参数来刷新数据,那么你可能需要在目标页面的 onInitonLoad 方法中监听参数变化,并手动触发数据加载。
  3. 参数传递问题:即使页面没有跳转,你也可以通过 Get.arguments 获取传递的参数。确认在 Detail 页面是否正确获取了参数,并且根据参数加载了对应的数据。
  4. GetX 绑定问题:如果你使用的是 GetX 的状态管理功能,确保你的控制器(Controller)被正确绑定到页面,并且页面正确地响应了状态的变化。
  5. 代码逻辑错误:检查 Detail 页面的其他代码逻辑,确认没有其他代码阻止了页面的跳转或者覆盖了 Get.toNamed 的行为。

为了解决这个问题,你可以尝试以下步骤:

  • 检查路由配置:确保 /detail 路由在路由配置中正确无误。
  • 监听参数变化:在 Detail 页面的 onInitonLoad 方法中监听 arguments 的变化,并在参数变化时加载对应的数据。
  • 调试和日志:添加日志输出,检查 Get.toNamed 是否被调用,以及参数是否正确传递。
  • 更新 GetX:如果你使用的是较旧的 GetX 版本,尝试更新到最新版本,看看问题是否得到解决。

如果以上步骤都不能解决问题,你可能需要提供更详细的代码和配置信息,以便进一步分析问题所在。

 类似资料:
  • 是不是ios14以后不支持这样配置了? 通过h5页面通过Universal Links跳转到app,一直没用

  • pages.json 中 pages配置四个页面,其中有三个配置到了tabBar中 删减代码如下: 我现在需要从客户通讯录中通过点击跳转到没有配置在tabBar中的 客户详情页面中,事件代码如下: 结果控制台报错: 我的文件 '/pages/CustomerInfo/index' 是存在的,路径也没有写错,为什么会找不到页面呢?

  • 页面跳转可以是打开新的一页,也可以是当前页重定向,还可以是跳转到当前页的某个状态,下面会从打开w文件,打开其它后缀文件,使用路由等几个方面分别介绍一下在X5中的页面跳转。 目录 1、打开w文件 1.1、使用Shell提供的方法 1.2、使用弹出窗口打开 1.3、模拟门户的做法 2、打开html等其它类型的文件 2.1、使用打开w文件的方法 2.2、使用a链接跳转 2.3、页面重定向 2.4、使用w

  • 页面跳转可以是打开新的一页,也可以是当前页重定向,还可以是跳转到当前页的某个状态,下面会从打开w文件,打开其它后缀文件,使用路由等几个方面分别介绍一下在X5中的页面跳转。 目录 1、打开w文件 1.1、使用Shell提供的方法 1.2、使用弹出窗口打开 1.3、模拟门户的做法 2、打开html等其它类型的文件 2.1、使用打开w文件的方法 2.2、使用a链接跳转 2.3、页面重定向 2.4、使用w

  • 修改superset前端文件,(superset-frontend文件夹下的文件)。npm run dev-server 和 superset run -p 8088前后端分别启动,访问前端链接,会发现对前端界面的修改是已经生效的。。。。。但是npm run -p 8088直接运行superset项目,访问对应的链接,发现前端的修改没有生效,(修改后,有重新打包前端项目,打包成功,在superse

  • 在教程的帮助下,我编写了一个服务人员: 它总是先从缓存服务,然后获取所有文件,并在页面重新加载时更新。 Service Worker在我的服务器上的每个超文本标记语言文件中都是这样注册的: 现在的问题是,当我转到一个尚未缓存的页面时,它首先向我显示默认的Chrome错误(以及“不匹配”promise拒绝)。 软件会在向客户机显示错误页面的同时获取它,并在重新加载时再次工作(因为它是从缓存提供服务的