shell .NET MAUI ApplyQueryAttributes被调用,甚至从不相关的页面导航回来

l5tcr1uw  于 2023-04-12  发布在  Shell
关注(0)|答案(1)|浏览(144)

我实现了一个简单的Shell导航(伪代码):

Home -> GoToAsync Page1 -> GoToAsync Page2 -> backward navigate to Home using GoToAsync("../../")

在最后一步中,我传递了在Page1和Page2中收集的参数,以便Home中的方法ApplyQueryAttributes()第一次执行,我可以检索它们。
从那一刻起,用户可以沿着不同的路径移动:

Home -> GoToAsync Page3

事实是:当使用AppTitle中的后退按钮或默认“返回”箭头从Page3导航回主页时,主页中的方法ApplyQueryAttributes()始终执行,并且始终从Page2接收当前参数
这是一个BUG还是一个功能?
在我看来,这是一个BUG,因为当从Page3移动到Home时,没有任何东西将这些参数推到Home。这就像“回到家”的路线被缓存,当以这种方式旅行时,“缓存”的路线(带有参数)被执行。
有什么方法可以防止这种行为吗?(不管是什么,一个bug还是一个特性)

jvlzgdj9

jvlzgdj91#

我也遇到了同样的问题,但找到了一种解决方法。它不能防止错误行为,但会忽略返回参数:
每个页面都有这个方法来处理返回参数。在它结束时,query 被清除,不会对其他页面造成任何伤害。

public async void ApplyQueryAttributes(IDictionary<string, object> query)
{
    if (query.Count > 0) 
    {
        // extract parameters
    }

    query.Clear(); // important
}

相关问题