Xamarin Forms: El método Device.OnPlatform

¡Adquiere el Máster en Xamarin Forms!

Antes de iniciar, te invito a visitar la página de la Membresía de mi academia, donde podrás encontrar:

Cursos y talleres de Xamarin
Cursos y talleres en C#
Cursos y talleres de Blazor
– Cursos y talleres de ASP.NET
– Cursos y talleres en muchas otras tecnologías

¡Todo al precio más bajo posible por tiempo limitado!

curso de xamarin

Cuando trabajamos en un desarrollo multiplataforma, a veces es necesario que ciertas propiedades se comporten de forma diferente de acuerdo a la plataforma en la que se encuentre ejecutándose.

Una clase que nos puede ayudar a alcanzar dicho objetivo, es la clase estática Device, la cual dentro de sus métodos incluye un método llamado OnPlatform, cuya definición indica que “Ejecuta diferentes acciones dependiendo en el Xamarin.QcuikUI.TargetOS Form que se encuentre ejecutando.

Es decir, que con dicho método, podremos asignar que una propiedad Text aparezca con un texto diferente en cada plataforma, que un tamaño de letra sea diferente en cada plataforma, etc.

La documentación indica que los parámetros de dicho méotod, son opcionales y van ordenados de la siguiente forma:

  • iOS(optional)
    • The Action to execute on iOS.
  • Android(optional)
    • The Action to execute on Android.
  • WinPhone(optional)
    • The Action to execute on WinPhone.
  • Default(optional)
    • The Action to execute if no Action was provided for the current OS.

Veamos un ejemplo práctico con un proyecto recién creado en Xamarin Forms:

            MainPage = new ContentPage
            {
                Content = new StackLayout
                {
                    VerticalOptions = LayoutOptions.Center,
                    Children =
                    {
                        new Label
                        {
                            XAlign = TextAlignment.Center,
                            Text = "Welcome to Xamarin Forms!"
                        }
                    }
                }
            };

El código anterior, muestra el código que es creado en un nuevo proyecto tipo Xamarin Forms, lo modificaremos para que muestre un texto de acuerdo a la plataforma en específico:

                Content = new StackLayout
                {
                    VerticalOptions = LayoutOptions.Center,
                    Children =
                    {
                        new Label
                        {
                            XAlign = TextAlignment.Center,
                            Text = Device.OnPlatform("IOS", "ANDROID", "WINPHONE")
                        }
                    }
                }

O podemos hacer que un control sea o no visible de acuerdo a la plataforma:

                         new Label
                         {
                            XAlign = TextAlignment.Center,
                            Text = "Welcome to Xamarin Forms!",
                            IsVisible = Device.OnPlatform(true,false,true)
                         }

Incluso, podemos implementar un manejador de eventos distinto para un botón en cada plataforma:

            var button1 = new Button
            {
                Text = "Click Me!"
            };
            Device.OnPlatform
            (
                iOS: () => button1.Clicked += (sender, e) =>
                {
                    DisplayAlert("IOS", "Estoy en un Iphone!", "Ok");
                },
                Android: () => button1.Clicked += (sender, e) =>
                {
                    DisplayAlert("Android", "Estoy en un Androide!", "Ok");
                },
                WinPhone: () => button1.Clicked += (sender, e) =>
                {
                    DisplayAlert("WinPhone", "Estoy en un Lumia!", "Ok");
                }
            );

Espero que les sea de utilidad.

¡Saludos!

Deja un comentario

Tu dirección de correo electrónico no será publicada.