似乎是一个简单的问题,但我一直无法找到简单的答案。本质上,我想根据某些存储的状态选择应用程序中的哪个页面启动。我在 AppShell 构造函数中添加了 GoToAsync 调用,但这不起作用 - 这是有道理的,因为 AppShell 尚未完全构建。
我找到了这个答案,但感觉它有点回避这个问题:
哪里是注入一些代码的最佳位置,这些代码将在启动时运行一次并可以成功地将 .NET Maui 应用程序导航到所选页面?
在尝试了重写之后,似乎重写是Application.OnStart有效的!Shell.Current此时已设置并且导航可以工作。
以下是允许异步初始化并使用加载页面直到初始化完成的附加代码:
using MyApp.Services;
using MyApp.UI;
namespace MyApp;
public partial class App : Application
{
ConfigurationProviderService m_configProvider;
public App(ConfigurationProviderService configProvider)
{
m_configProvider = configProvider;
InitializeComponent();
MainPage = new LoadingPage();
}
protected override void OnStart()
{
var task = InitAsync();
task.ContinueWith((task) =>
{
MainThread.BeginInvokeOnMainThread(() =>
{
MainPage = new AppShell();
// Choose navigation depending on init
Shell.Current.GoToAsync(...);
});
});
base.OnStart();
}
private async Task InitAsync()
{
await m_configProvider.InitAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6721 次 |
| 最近记录: |