Flutter:API返回401时如何清除所有历史路由并返回WelcomeScreen?
解决API返回401时清空路由栈并跳转至WelcomeScreen的问题
你当前通过多次调用Get.back()的方式无法彻底清空路由栈,这种方式依赖历史页面数量,非常不灵活。可以用GetX提供的Get.offAll()方法直接替换整个导航栈,一次性清空所有历史路由并跳转到目标页面。
修改后的Controller代码
AuthController auth = Get.find(); Future<void> fetchUsers() async{ var response = await userService.findAll(); //...... if(response.code==401){ auth.authStateStream.value = UnAuthenticated(); // 清空全部路由栈,跳转至WelcomeScreen Get.offAll(() => WelcomeScreen()); } }
原理说明
Get.offAll()会将当前整个导航栈替换为目标页面,之后用户点击返回键会直接退出应用,而不会回到之前的任何历史页面,完全符合你需要清空所有历史路由的需求。
另外,你当前的GetMaterialApp中通过Obx根据状态切换home的逻辑可以保留,但状态切换时并不会自动清空路由栈,所以必须主动调用Get.offAll()来完成路由栈的清理,确保状态和路由栈的一致性。
内容的提问来源于stack exchange,提问作者BOOM
相关产品推荐
相关产品推荐

