Introduction of AiForms.Dialogs for Xamarin.Forms
Kamu
Posted on April 26, 2019
Speaking of Dialogs in Xamarin.Forms, ACR User Dialogs is very famous, and I have used a lot in business.
In personal development, I used not it but self-implemented using DependencyService. And I implemented such as a loading dialog with it.
On Android, I used a ProgressDialog, and this turned to Deprecated, so I thought refactoring it.
When I was refactoring it, I hit on "This can be independent as a Library by a little effort".
Although it wasn't a little effort as a result, I almost finished it and so I released this as a NuGet package.
First of all, I thought that I wanted to replace self-implemented to ACR User Dialogs. But its GitHub repository is not active and it is not customizable such as replacing a loading icon. So I thought that I should make a library myself.
While implementing it, I found Popup Page Plugin at my twitter timeline. I thought this library was just what I wanted. But because I had already implemented most of it then, I decided to complete it differentiating from Popup Page Plugin.
Repository
Source
https://github.com/muak/AiForms.Dialogs
Nuget
https://www.nuget.org/packages/AiForms.Dialogs/
This is currently a pre-release.
Demo
Summary
AiForms.Dialogs is what can be put a ContentView defined by XAML or c# code into each platform native dialog and show it.
The position of a dialog can be specified any position in the screen with VerticalLayoutAlignment
, HorizontallayoutAlignment
, OffsetX
and OffsetY
property.
Features
- Dialog – Showing a general dialog.
- Toast – Showing what is called a toast.
- Loading – Showing a full-screen modal dialog for loading.
Usage
var ret = await Dialog.Instance.ShowAsync<MyDialogView>(new{Title="Hello"});
// If canceled, return false. If completed, return true.
// Optionally, you can pass a ViewModel to a DialogView.
// When the dialog is closed, all related resources are automatically disposed of.
Toast.Instance.Show<MyToastView>(new{Title="Hello",Duration=1500});
// Optionally, you can pass a ViewModel to a ToastView.
await Loading.Instance.StartAsync(async progress =>{
// Heavy process
for (var i = 0; i < 100; i++)
{
await Task.Delay(50);
// You can send the progress to a dialog with IProgress<double> value.
progress.Report((i + 1) * 0.01d);
}
});
For more information about how to use AiForms.Dialogs, see ReadMe.
Concluding
I would be grateful if you could use this library for using an elaborate dialog in a NETStandard project.
If there are some questions, requests, and bug reports, please report it to GitHub issues or twitter.
Posted on April 26, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.