1. flujo de trabajo de desarrollo
Trabajar con Avalonia es un placer, la vista previa de Visual Studio, VS Code y Rider de Jetbrain funciona a la perfección, ¡y la velocidad de compilación hace que el proceso de prueba y ajuste sea increíblemente fluido! Por no hablar de las DevTools de Avalonia, disponibles durante el tiempo de ejecución al pulsar la tecla F12, donde puedes inspeccionar los árboles lógicos y visuales de la aplicación, tal y como harías con el panel de herramientas de desarrollo de un navegador web.
2. Selectores de estilo
El
selectores diferencian a Avalonia de sus plataformas vecinas XAML en términos de capacidades de estilo. Es cierto que puedes personalizarlo todo desde un control con ControlTemplates (igual que WPF), ¡pero esto va más allá! Tiene la flexibilidad de CSS de aplicar estilos a los elementos en función de una amplia gama de criterios.
Un ejemplo sencillo de esto (¡hay muchos en la aplicación!) es que definimos un conjunto de animaciones para AnimatedImage en función de una pseudoclase (tormenta, sol, viento, etc.).
<styleselector="ctl|Imagen animada: Sunny">
<Style.Animations>.
<Animación...
</Animation>
</Style.Animations>
</Style>
De esta forma, podemos animar imágenes simplemente configurando una pseudo clase, independientemente del otro estilo que haya aplicado el control.
3. El control de pestañas
La navegación del tablero principal utiliza el TabControl de Avalonia. Aquí debemos destacar la enorme flexibilidad de estilo que ofrecen las plantillas para cambiar por completo el aspecto del control, y también que, al usar DataTemplates para mostrar el contenido, se convierte automáticamente en un control de carga diferida, lo que significa que la interfaz de usuario de las pestañas no se cargará hasta que el usuario las seleccione. ¡Todo ello con el control listo para usar!
4. Controles de usuario reutilizables
La creación de UserControls fue como trabajar en WPF, es una forma sencilla y muy poderosa de crear controles reutilizables. Un buen ejemplo de ello son los widgets que se utilizan en el panel principal. Cada cuadro es un UserControl personalizado con propiedades para cargar los datos. Un ejemplo concreto que vale la pena mencionar es el RadiationIndicator, que tiene las siguientes propiedades: Value, minValue, maxValues y PillColor; y se reutiliza 3 veces.
5. Organización de estilos
Los estilos con ámbito de aplicación están bien organizados en el archivo Resources.axaml, que contiene la paleta de colores y los estilos de los controles generales, como los botones y los menús. Los estilos de los textos y los controles específicos se encuentran en Styles.axaml, que, una vez más, aprovecha la potencia de los selectores para crear un conjunto flexible de ajustes visuales que se pueden utilizar en cualquier lugar.
6. Kit de herramientas para la comunidad MVVM
El
Kit de herramientas MVVM proporciona todas las herramientas necesarias para seguir el patrón modelo-vista-vista-modelo. Se integra perfectamente con Avalonia. El uso de atributos para definir las propiedades y los comandos de ViewModel ahorra tiempo y evita errores. La otra opción que le ayudará a crear una aplicación MVVM es
Interfaz de usuario reactiva, que también se integra perfectamente con Avalonia.
7. Gráficos
La aplicación utiliza medidores de
Charts en vivo 2 para crear los widgets del panel de control Humedad y Viento. Funcionan muy bien. Si necesitas gráficos, ¡te recomendamos encarecidamente que los consultes!
8. Enrutamiento
Como el MVVM Community Toolkit no tiene más de un mecanismo de enrutamiento de navegación, hemos creado uno sencillo para la aplicación que esperamos sirva de referencia. Puedes consultarlo en la carpeta Controls/RouterPresenter.
9. Modos de aplicación
La aplicación tiene 2 modos: conectado y simulado. La opción conectada obtiene datos reales de
API de clima ambiental para obtener información actualizada, y también obtiene datos de
API de matemáticas para cargar la previsión. Tenga en cuenta que ambos requieren una API. Por otro lado, el modo simulado carga datos de muestra de un archivo JSON y simula los cambios con temporizadores. Si bien el primer modo muestra cómo consumir un servicio real, el otro proporciona un entorno seguro para probar la aplicación.
10. AOT
Habilitando
Compilación anticipada (AOT) puede mejorar notablemente el rendimiento de la aplicación. Sin embargo, AOT tiene algunas limitaciones, por lo que para que la aplicación funcione, tuvimos que reemplazar Newtonsoft.Json por System.Text.Json e hicimos un par de ajustes más que se explican en detalle en la documentación que incluimos con el código.