代码 > flutter的showDialog
2024-05-23
这次调代码的主要原因就是随着flutter sdk版本升级,showdiablog失效了……
怎么说呢。
flutter的showDialog虽然名字是showDialog,但它本质值是伪装成showDialog的功能。
本质是在导航里插入一个临时节点,然后在临时节点里显示Dialog的内容。
3.10-3.22不知道那个版本的更新修改了逻辑,showDialog会触发一次路由匹配……
正经来说
showDialog需要指定context和useRootNavigator。
理论上,按照传统的showDialog函数的用法。
少副作用的showDialog需要在容器里用一个Navigator组件来包住子元素。
然后通过指定Navigator的Key的方式,在运行时获取到Navigator的context。
然后,再取消useRootNavigator,这样才能限制showDialog的副作用在自定义的Navigator内。
完全理通的时候,能够理解这个逻辑。
但文档里没说清楚的话,刚开始用真的太容易踩坑了。
点击登录