Flutter配置页点击保存或报错时黑屏且弹窗不显示问题排查
问题原因分析
导航栈清空引发黑屏:你用
Navigator.pushReplacement跳转SettingsPage时,原页面会被直接从导航栈移除,此时栈里只剩SettingsPage。要是保存按钮或try-catch逻辑里先调用了Navigator.pop(context),SettingsPage也会被弹出,导航栈彻底为空就会显示黑屏。而AlertDialog必须依附在存在的页面上下文上,这时对应的context已经失效,Dialog自然弹不出来。Dialog弹出时机错误:如果先执行
Navigator.pop再弹AlertDialog,当前页面的context已经失效(Widget已从Widget树卸载),Dialog找不到有效的挂载节点,不仅无法显示,还会导致界面状态异常触发黑屏。Context使用有误:哪怕提前获取了context,要是这个context属于被
pushReplacement移除的原页面,或是MaterialApp根节点的context,弹出Dialog时会因为没有正确的导航上下文而失败,进而引发界面异常。错误处理逻辑顺序问题:比如try块里先执行了页面弹出/跳转操作,之后才抛出异常,catch块里用已经失效的context去弹Dialog,就会出现这种问题。
内容的提问来源于stack exchange,提问作者Caio
相关产品推荐
相关产品推荐

