根据我在互联网上找到的内容,我创建了一个 SpinnerPopup 来显示长时间运行任务的微调器。旋转器就在那里并且最终会出现,但不是在我非常想要的时候。我真正想做的就是在方法启动时启动微调器,并在方法完成时结束它,但它还远远没有工作。这是我的旋转类;
<toolkit:Popup
x:Class="MauiFirstApp.SpinnerPopup"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:ViewModel="clr-namespace:MauiFirstApp.ViewModels"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
<VerticalStackLayout>
<ActivityIndicator IsRunning="True" />
<Label Text="Loading..." />
</VerticalStackLayout>
</toolkit:Popup>
这是背后的代码;
public partial class SpinnerPopup : Popup
{
public SpinnerPopup()
{
InitializeComponent();
}
}
这是我在方法调用之前打开它并在方法调用之后关闭它的代码,但它根本不起作用。当方法结束时它最终打开,然后立即关闭,所以什么也没有显示,除非我乱搞代码来显示。
else if (DeviceInfo.Platform.ToString() == Device.Android)
{
popup = new SpinnerPopup();
this.ShowPopup(popup);
await UpdateCarsProperties(id, radio, toggled);
await ucvm.GetDisplayData("UpdateCars", cv, popup);
await popup.CloseAsync();
popup.Reset();
Preferences.Set("Updated", true);
}
不太确定在这里要做什么,上面编码的旋转器 iOS 旋转器适用于 iOS,但不适用于 Android。任何帮助将不胜感激。
如果您执行非常短的代码或需要很短时间的任务,
SpinnerPopup
会很快出现和消失,造成它从未出现的错觉。
但是,如果您执行一项耗时的任务,
SpinnerPopup
将会出现,并在任务结束时消失。
根据你的代码,我创建了一个demo,并尝试使用
await Task.Delay(3000);
来模拟一个耗时的任务,结果是SpinnerPopup
在android平台上可以在3秒后出现并消失。
var popup = new SpinnerPopup();
this.ShowPopup(popup);
//add Task.Delay method here
await Task.Delay(3000);
await popup.CloseAsync();
popup.Reset();