代码 > 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内。

完全理通的时候,能够理解这个逻辑。

但文档里没说清楚的话,刚开始用真的太容易踩坑了。

点击登录