在xamarin中设置2秒延迟不起作用



我在视图类中显示2秒的渐变动画,2秒后,我想转到viewmodel类运行哪个加载登录页面或注册页面逻辑

现在它跳过2秒的动画,直接进入viewmodel。idk这里有什么问题

如果我删除了BindingContext = new SplashscreenViewModel();行,动画就会出现,但它不会进入视图模型类

SplashscreenPage.xaml.cs-查看类

public SplashscreenPage ()
{
InitializeComponent ();
Animation();
BindingContext = new SplashscreenViewModel();
}
async void Animation()
{
ssImage.Opacity = 0;
await Task.WhenAll(
ssImage.FadeTo(1, 2000),
ssImage.ScaleTo(1.1, 2000)
);
}//end of method

初始屏幕-视图模型类

public SplashscreenViewModel()
{
WhichPageToLoad();
}

async void WhichPageToLoad()
{
var getToken = await SecureStorage.GetAsync("Save_Pin_1");
if(getToken == null)
{
var route = $"{ nameof(SignupPage)}";
await Shell.Current.GoToAsync(route);
}
else
{
var route = $"{ nameof(LoginPage)}";
await Shell.Current.GoToAsync(route);
}
}

由于没有进行任何数据绑定,因此拥有VM类或分配BindingContext实际上没有意义。您可以在动画完成后调用导航代码。您不能从构造函数进行异步调用,因此将动画和导航登录移动到OnAppearing将允许您进行异步调用

public SplashscreenPage ()
{
InitializeComponent ();
}
async override void OnAppearing()
{
ssImage.Opacity = 0;
await Task.WhenAll(
ssImage.FadeTo(1, 2000),
ssImage.ScaleTo(1.1, 2000)
);
var getToken = await SecureStorage.GetAsync("Save_Pin_1");

if(getToken == null)
{
var route = $"{ nameof(SignupPage)}";
await Shell.Current.GoToAsync(route);
}
else
{
var route = $"{ nameof(LoginPage)}";
await Shell.Current.GoToAsync(route);
}
}

最新更新