Quantcast
Channel: Recent Threads — Xamarin Community Forums
Viewing all articles
Browse latest Browse all 204402

Loading indicator during pages navigation

$
0
0

Is there any possibility, to show some loading indicator, during navigation between pages?
Currently I'm using ACR UserDialogs for long running operations (for async operations), that are operating against given view - in example some button, which cause invoking HTTP REST communication with backend server. Everything works smooth, I'm doing it like:

UserDialogs.Instance.ShowLoading("Loading text here...");
await someLongRunningBusinessOperation();
UserDialogs.Instance.HideLoading();

Currently I'm stuck, without any idea, how to get it (or anything else in Xamarin.Forms) work, in order to cover UI, and show some Loading/Progress/anything UI element during navigating between pages.
Why? Because when I've navigating between pages, navigation took around 1-3 seconds (depends on "amounts" of elements, that page I'm trying to navigate to, contains).
It's not related to any strict non UI operations (like filling collections or anything else), it's just time of preparing/drawing UI components by Xamarin.Forms.

Currenly, when I'm navigating from Page1 to Page2 via some button click, app "freezes" for around 1-3 seconds at Page1 after clicking button, and after mentioned 1-3 seconds, Page2 appears.

My high level thinking is like:

UserDialogs.Instance.ShowLoading("Loading page..."); // invoke it in example at **Page1 ViewModel**
await MainPage.Navigation.PushAsync(page); // invoke it in example at **Page1 ViewModel**
UserDialogs.Instance.HideLoading(); // invoke it somewhere, when page is ready to be shown or already shown - like **OnAppearing()** of **Page2 View code behind**

However each and every attempt to get it work, didn't get any result at UI.

PS: I've already tried IsBusy of given page (didn't get any UI result).


Viewing all articles
Browse latest Browse all 204402

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>