Flutter go_router中push()与go()的差异及Web端URL更新+数据刷新的典型场景解决方案咨询
Flutter go_router中push()与go()的差异及Web端URL更新+数据刷新的典型场景解决方案咨询
大家好,我现在遇到一个典型的Flutter导航场景问题,想请教下正确的处理方式。
我写了一个简单的Demo来模拟日常开发里的常见流程:列表页从数据库加载数据,点击某条记录进入详情页修改内容,点击保存按钮后返回列表页,同时看到更新后的数据。
在测试两种导航方式时,我遇到了各自的问题:
- 使用
context.push()时:因为它会返回一个Future,我可以等待详情页执行context.pop()后,再调用getDataFromDataBase()重新拉取数据,数据刷新是正常的,但Web端的URL不会随之更新,这让我不确定是不是预期行为。 - 使用
context.go()时:Web端的URL能正常更新,但它返回的是void,我没办法在详情页pop()后触发列表页的数据刷新,不知道该怎么处理这种情况。
官方文档里似乎更推荐context.go()这类声明式导航(提到命令式导航可能引发一些问题),所以我有两个疑问想请教大家:
context.push()不修改Web端URL是预期的设计行为吗?- 如果采用推荐的
context.go()导航,这种修改数据后返回刷新列表的场景,正确的处理方式是什么?怎么在context.pop()后触发列表页的数据更新?
感觉这应该是非常普遍的场景,肯定有我没考虑到的处理方式,希望大家能给我指条明路,谢谢!
备注:内容来源于stack exchange,提问作者rocotocloc
相关产品推荐
相关产品推荐

