我试图在用户点击 MAUI 应用程序中的后退按钮时显示一个弹出窗口。
我发现这很棘手,因为 DisplayAlert 是一个需要等待的异步方法,但 OnButtonPressed 的重写是同步的。
如果我尝试在单独的等待任务中发送警报,它将显示。但应用程序仍会导航离开,因为它没有等待它。
我看不到任何异步重写 OnButtonPressed 的方法。
理想情况下,我尝试做这样的事情:
protected override bool OnBackButtonPressed()
{
var leave = await DisplayAlert("Leave lobby?", "Are you sure you want to leave the lobby?", "Yes", "No");
if (leave)
{
await handleLeaveAsync();
return base.OnBackButtonPressed();
}
else
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢!
感谢 @Jason 在 Xamarin 中发布了类似问题的链接,这在 MAUI 中有效,并将阻止页面导航,但是通过此实现,我们无法使用基本行为。
如果您依赖导航历史记录,这可能会出现问题,因为您现在指示应用程序导航到何处(如果他们确认),您将需要更多代码来保存和检索历史记录以导航回上一屏幕。
protected override bool OnBackButtonPressed()
{
Dispatcher.Dispatch(async () =>
{
var leave = await DisplayAlert("Leave lobby?", "Are you sure you want to leave the lobby?", "Yes", "No");
if (leave)
{
await handleLeaveAsync();
await Navigation.PushAsync(new MainPage());
}
});
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6544 次 |
| 最近记录: |