Introducción de  .NET Multi-platform App UI

Introducción de  .NET Multi-platform App UI

Partiendo de la evolución de Xamarin.Forms llega a .NET, Multi-platform App UI, MAUI. Se trata de un framework, evolución de Xamarin.Forms, que permitirá crear interfaces de usuario nativas para escritorio y dispositivos móviles usando una base de código común y un único proyecto.

En .NET podrás encontrar:

  • System.Maui: Evolución de lo que puedes encontrar hoy día en Xamarin.Forms.
  • System.Devices: Evolución de lo que puedes encontrar hoy día en Xamarin.Essentials.

Un vistazo a MAUI

Se podrá usar Visual Studio para Windows, Visual Studio para macOS y también Visual Studio Code para crear proyectos y trabajar con MAUI. De igual forma, llega el soporte CLI (command line interface):

dotnet new maui

Las claves

Las claves de MAUI son:

  • Interfaz de usuario multi-plataforma nativa.
  • Evolución de Xamarin.Forms.
  • Base de código común, un único proyecto.
  • Usará .NET 6 (previews a final de 2021).

Los objetivos fundamentales son:

  • Mejorar el rendimiento.
  • Mejorar las posibilidades a la hora de extender controles. Extender de forma más sencilla.
  • Habilitar otras opciones como Model-View-Update (MVU).

La UI

Podrás definir la UI en MAUI usando XAML o C#.

Desarrollo más versátil y simplificado

Otro cambio importante que llegará con MAUI es la simplificación del desarrollo. Pasaremos a tener un único proyecto:

Proyecto único

Que tendrá la siguiente pinta:

Configuración del proyecto

Podremos elegir el despliegue entre diferentes dispositivos o emuladores aunque tengamos un único proyecto:

Despliegue

Probablemente te estarás preguntando, ¿y que ocurre con los recursos de la aplicación como imágenes, etc?.

Gestión de recursos simplificada

El tooling gestionará fuentes compartidas en cada plataforma así como la gestión y creación de imágenes adaptadas a cada plataforma.

¿Y si necesito código específico por cada plataforma?. De igual forma, será posible gestionar de forma sencilla código específico:

Código por plataforma

¿Quieres ver un pequeño ejemplo de todo?

Proyecto único

Xamarin.Forms vs MAUI

¿Cuáles son las diferencias entre Xamarin.Forms y MAUI?.

Xamarin.Forms – MAUI

De la tabla anterior podemos ver diferencias básicas como:

  • Maui tendrá soporte oficial a macOS y Windows!.
  • Soporte a MVU oficial.
  • Soporte a multi-ventana.
  • Soporte a multi-targeting.
  • Proyecto único!.
  • Soporte a utilizar Visual Studio Code y CLI.

Nueva arquitectura de renderers

Uno de los cambios más importantes que llegará en MAUI es una nueva arquitectura de renderers simplificada que se beneficia del multi-targeting y la nueva funcionalidad de proyecto único.

Veamos un ejemplo.

EntryRenderer

public partial class EntryRenderer {
   public static PropertyMapper<IView> ViewMapper = new PropertyMapper<IView> {
	
     // Add your own method to map to any property         
     [nameof(IView.BackgroundColor)] = MapBackgroundColor

   };
}

EntryRenderer.iOS.cs

// You don’t need to register a new renderer.
public partial class EntryRenderer
{
     // You know what method to call because you named it!
   public static void MapBackgroundColor (IViewRenderer renderer, IView view)
     {
        // You don’t need to call any base methods here or worry about order.
   
        // Every renderer is consistent; you know where the native view is.
          var nativeView = (NativeView)renderer.NativeView;
          var color = view.BackgroundColor;

          if (color != null) {

            // Phew! That was easy!	        
            nativeView.BackgroundColor = UIColor.FromRGB (204, 153, 255);
          }
     }
}

Novedades en Shell

Shell llegó en Xamarin.Forms con el objetivo de simplificar la creación de la estructura de la aplicación. Tener un Flyout, pestañas, etc.

Shell hacía muchas cosas bien, como simplificar la creación de estructuras, simplificar la navegación o la gestión de la barra de búsqueda. Sin embargo, sabemos que también hay cosas que se debían mejorar. Por poner algunos ejemplos: la abstracción de nombres hacía que aprender Shell fuese más complejo de lo necesario, había escenarios no cubiertos, etc. Con la llegada de Shell 2.0 se busca mejorar todas estas opciones.

Novedades en animaciones

Se añade IDispatcher en IAnimatable lo que hará las animaciones compatibles con multi-ventana, etc.

DI

La gestión de dependencias se alineará con la experiencia Microsoft siendo igual a ASP.NET Core por ejemplo. Se usará Microsoft.Extensions.DependencyInjection.

Mejoras en rendimiento

La nueva arquitectura de renderers simplificada es uno de los cambios que ayudará a mejorar el rendimiento (sin eventos, etc.).

Por otro lado, llegarán cambios a vistas actuales con un impacto alto en el rendimiento. Un ejemplo claro ocurre en la gestión de imágenes. En Android se usará GlideX:

Comparativa entre Image de Xamarin.Forms y GlideX

Más opciones para personalizar la UI!

Probablemente conoces Visual de Xamarin.Forms. Cuando utilizamos Visual, se utiliza el renderizado personalizado en cada plataforma en lugar del renderizado predeterminado. Podemos conseguir utilizar Material de forma sencilla. En Maui llegarán novedades para especificar diferentes comportamientos de una View usando Visual. Ejemplo: Un botón Outline (con bordes) o de tipo Text (solo texto, sin bordes).

Puedes leer más acerca de las novedades de Visual en este enlace.

Además MAUI tendrá:

  • Opciones para personalizar bordes: Poder definir color o grosor de bordes en vistas como Frame o un Picker por ejemplo.
  • De igual forma, se podrán crear bordes redondeados.
  • Soporte a Brushes: poder crear gradientes en cualquier View.
  • Soporte a Shadows (sombras).
  • Podremos crear formas básicas o hacer Clipping en vistas usando una forma específica.
  • Se podrá personalizar con plantillas pestañas o la barra de navegación.
  • Tendremos transiciones!.

Otras novedades

  • Soporte oficial a macOS y Windows (Desktop).
  • Mejoras en triggers y behaviors.
  • Mejoras en Layouts.
  • Más gestos.
  • Etc.

Roadmap

El roadmap básico de MAUI es el siguiente:

  • MAUI tendrá previews desde Q4 de 2020 hasta el Q3 de 2021.
  • MAUI Release Candidate en Septiembre de 2021.
  • MAUI disponible en Noviembre de 2021.

Queremos tu ayuda para mejorar!

Sí, puedes ayudarnos!. ¿Qué cómo nos podrías ayudar?, puedes revisar todas las Specs publicadas y darnos tu feedback, etc.

¿Y qué ocurre con Xamarin.Forms?

Xamarin.Forms continuará evolucionando y mejorando en las sucesivas versiones 4.7, 4.8, etc hasta el lanzamiento de MAUI con .NET 6. Después de eso, Xamarin.Forms continuará recibiendo soporte durante 12 meses.

Más información

Deja un comentario