Flutter Web移动端浏览器跳转后URL更新但页面冻结无响应问题求助
可能的解决方案
1. 导航前强制移除输入框焦点
移动端浏览器中,输入框持有的焦点可能干扰页面导航的DOM更新逻辑。在调用context.pushNamed前主动移除焦点:
// 按钮点击回调内 FocusScope.of(context).unfocus(); await context.pushNamed('pageC');
2. 排查PageC的Widget树异常
确认PageC的build方法中无无限循环、阻塞UI的耗时操作,或未正确处理的状态冲突。比如检查initState是否执行了同步阻塞逻辑,TextFormField的控制器、表单状态是否存在初始化异常。
3. 临时替换导航方式测试
用replaceNamed替代pushNamed,验证是否能绕过冻结问题:
context.replaceNamed('pageC');
若此方法有效,说明页面栈状态在移动端浏览器中存在异常,需进一步排查栈管理逻辑。
4. 升级Flutter与GoRouter版本
部分旧版本的Flutter Web或GoRouter在移动端浏览器存在导航相关bug,尝试升级到最新稳定版:
- 执行
flutter upgrade升级Flutter - 在
pubspec.yaml中更新GoRouter版本后,执行flutter pub get
5. 检查PageB输入框的焦点管理
若PageB的TextFormField使用了自定义FocusNode,需确保页面销毁时调用dispose(),或在导航前手动调用focusNode.unfocus()释放焦点。
内容的提问来源于stack exchange,提问作者saintjab
相关产品推荐
相关产品推荐

