以 xamarin 形式导航到下一页

假设我在 Page_1 中,而单击按钮必须导航到 Page_2.In Page_2 Api 调用必须完成。


MyIssue 是当我单击按钮时,它不会立即导航到 Page_2,而是等待 API 响应。


如何在不等待 API 响应的情况下立即导航到 Page_2。


代码:


Page_1.cs


public partial class Page_1 : ContentPage

{

    public Page_1()

    {

        InitializeComponent();

    }

    private void Btn_click(object sender, EventArgs e)

    {

        Navigation.PushAsync(new Page_2());

    }


}

第2页:


public Page_2()

    {

        InitializeComponent();

    }

    protected override void OnAppearing()

    {

        HttpClient httpClient = new HttpClient();

        var obj = httpClient.GetAsync("//Api//").Result;

        if (obj.IsSuccessStatusCode)

        {


        }

    }

相同的代码按预期在 iOS 中运行良好


郎朗坤
浏览 218回答 2
2回答

暮色呼如

您可以在其他任务中加载数据以防止阻塞 UI。protected override void OnAppearing(){    Task.Run( () => LoadData());    base.OnAppearing();}private async void LoadData(){    HttpClient httpClient = new HttpClient();    var obj = await httpClient.GetAsync("//Api//");    if (obj.IsSuccessStatusCode)    {        // If you need to set properties on the view be sure to use MainThread        // otherwise you won't see it on the view.        Device.BeginInvokeOnMainThread(() => Name = "your text";);    }}

Helenr

根据您的问题,您在 Page 构造函数上调用 API,这就是为什么加载 Web API 然后在 page2 上导航需要时间。如果您想在加载 api 之前在 page2 上导航。检查下面的代码    public partial class Page2 : ContentPage        {            bool IsLoading{ get; set; }            public Page2()            {                InitializeComponent();                  IsLoading = false;          }             protected async override void OnAppearing()            {                base.OnAppearing();                if (!IsLoading)                {                  IsLoading=true                  **Call the Web API Method Here**                }                IsLoading=false            }         }
打开App,查看更多内容
随时随地看视频慕课网APP