Desde siempre me pareció un poco triste que Power Apps nos preguntara sobre el dispositivo donde usaríamos la aplicación. Tablet o Teléfono? Sobre todo sabiendo que el cliente más utilizado sería el mismísimo navegador que tenemos en frente. Además, el hecho de que funciones como SaveData estén disponibles solo en mobile hacía solo que la tristeza fuese aún más profunda. Por suerte, hubo grandes progresos en los últimos 2 - 3 años como por ejemplo, el agregado de controles como Container y Layout. En este artículo expongo como resolver algunas dificultades sobre como lograr que una aplicacón desarrollada en Power Apps pueda seguir siendo útil sin importar donde se use.
Para poder trabajar en una aplicación para sea capaz de adaptarse a la pantalla del cliente, tendremos que deshabilitar la opción Scale to fit en la sección Display dentro Settings. Seguramente nos converrá deshbailitar también la opción look orientation.
Configuración de dimensiones en Power Apps
Power Apps nos da a disposición algunas variables que nos permiten conocer información ya sea de la aplicación que del cliente que la está ejecutando.
Los controles que vamos a usar para desarrollar el layout seran los siguientes:
Para agregar los controles Canvas y DataCard será necesario agregar una nueva pantalla seleccionando Templates → Scrollable. Generalmente tengo siempre una pantalla como template para simplemente copiar y pegar el camponente Canvas cada vez que lo necesito. El hecho de usar canvas y no directamente los contenedores para todo es que cuando tenemos muchos controles dentro un horizontal container se vuelve inmanejable. En cambio, con el control canvas es posible desplazarse y seleccionar cada control sin problemas.
Imaginemos un layout con dos columnas. La de la izquierda más pequeña que la de la derecha. Digamos un 25% - 75%. Ambas columnas vamos a realizarlas dentro de un vertical container que a su vez estará contenido por un horizontal container. Todo dentro el combo canvas - datacard. Los controles estarán dispuestos de la siguiente manera:
La idea será modificar ciertos parámetros utilizando App.ActiveScreen.Size para que cuando sea igual a 1 (mobile) ambas columnas se posicionen una debajo de la otra. Para que esto suceda, sará necesario que:
En detalle la configuración de cada parámetro de cada control será la siguiente:
El parámetro LayoutWrap del contenedor horizontal es fundamental para hacer que la columna derecha se posicione por debajo de la columna izquierda.
En el caso de Galleries muy anchas mi consejo es el de no adaptarlas. Sobre todo si nuestros usuarios utilizan la mayor parte el tiempo la aplicación en el navegador del portatil o desktop. Si ya se acostumbraron a ver los campos y botones de una galería, mejor no crear dos versiones de la misma cosa. Lo que podemos hacer fácilmente en Power Apps es colocar la Gallery dentro un horizontal container con un scroll horizontal. Debemos tener en cuenta que:
El resultado es exactamente igual a una tabla con la clase table-responsive en Bootstrap.