Aitor Sánchez - Blog - Oct. 27, 2023, 7:20 p.m.
¿Intentando colocar unos Ionic Checkbox en tus apps? O, talvez, lo que necesitas es conocer alguno de sus detalles más avanzados cómo sus listeners o funciones ¿verdad?
Mi nombre es Aitor Sánchez, soy desarrollador de apps desde 2014, y en el artículo de hoy aprenderás, de una manera sencilla, práctica y con ejemplos, a utilizar dicho componente en tus apps.
Pero antes de continuar, esta es la Flutter Mafia. Es mi newsletter donde aprenderás desarrollo de apps móviles, aso y monetización junto con otros genietes que ya están dentro. Y si te suscribes te regalo mi ebook "Duplica los ingreso de tus apps en 5 minutos" No es broma, quizás te interese.
Para comenzar, este es un componente genérico que viene por defecto incluido en las librerías gráficas de cualquier sistema de desarrollo de software. Por si no lo sabías, es la típica casilla de verificación que utilizamos a diario en mil y una webs o aplicaciones. También cabe mencionar que los checkbox en ionic son los mismo que en Angular. Al fin y al cabo, es el mismo sistema de codificación, pero adaptado para aplicaciones / apps móviles.
Su uso es realmente sencillo, no tenemos que importar nada a nuestro archivo app.module.ts como pasa con la mayoría de los componentes. Basta con que usemos sus etiquetas HTML y listo. Ya disponemos de un Checkbox en nuestra aplicación.
Nota importante: Para que un checkbox funcione correctamente (en Ionic) siempre tendrá que ir dentro de un "ion-item". Si no el track de eventos del componente no funcionará bien.
<ion-item> <ion-label>Pepperoni</ion-label> <ion-checkbox [(ngModel)]="pepperoni"></ion-checkbox> </ion-item>
Ahí tenemos la construcción. Me gustaría que lo probases en una aplicación tuya, si es que no lo has hecho aún. Te recuerdo, que como mejor se aprende a programar es picando código, no solo leyendo. Yo estoy tremendamente alagado de que esté aquí, conmigo, mano a mano. Pero me gusta mucho más aún que aprendas lo que yo te quiero enseñar. Así que, por favor, sigue este consejo y llegarás muy lejos. Si solo te paras o leer y leer nunca terminarás de aprender cómo se hacen las cosas.
Genial, pues llegados hasta aquí solo tengo que decirte que este componente solo tiene una propiedad de entrada. "Checked" y sirve, básicamente, para saber si está activo, o no, el checkbox.
Nota: Recuerdo que estos atributos son propios del componente. Al heredar de componentes padre también heredamos sus atributos. Por esta razón, tienes acceso a muchos más.
Atributo | Tipo | Detalles |
---|---|---|
checked | boolean |
Si es verdad, este elemento está seleccionado |
Antes de continuar, veamos una composición completa y funcional del componente.
<ion-item> <ion-label>Cucumber</ion-label> <ion-checkbox [(ngModel)]="cucumber" (ionChange)="updateCucumber()"></ion-checkbox> </ion-item>
Ahora pasamos a explicar un poquito:
Continuamos con un ejemplo de código funcional:
@Component({ templateUrl: 'main.html' }) class SaladPage { cucumber: boolean; updateCucumber() { console.log('Nuevo estado:' + this.cucumber); } }
Esté código imprimirá en la consola el estado en el que está el botón a tiempo real. Hemos tomado como referencia el código HTML anterior.
Y ahora vamos a ver, el que quizás será, el punto más importante de este mini tutorial.
Estas son las hojas predefinidas que vienen asignadas por defecto a este componente. En ella se engloban colores / colors, formas, iconos / icons, márgenes / margin, paddings, alineación / alignment, etc... todo lo que hace que el componente se vea como se ve...
Propiedad | Por defecto | Descripción |
---|---|---|
$checkbox-ios-background-color-off |
$list-ios-background-color |
El color de fondo cuando este elemento no está seleccionado |
$checkbox-ios-background-color-on |
color($colors-ios, primary) |
Color de fondo cuando este elemento está seleccionado |
$checkbox-ios-icon-size |
21px |
Tamaño del icono |
$checkbox-ios-icon-border-color-off |
$list-ios-border-color |
Color del borde cuando el elemento no está seleccionado |
$checkbox-ios-icon-border-color-on |
$checkbox-ios-background-color-on |
Color del borde cuando el elemento está seleccionado |
$checkbox-ios-icon-border-width |
1px |
Ancho del borde |
$checkbox-ios-icon-border-style |
solid |
Estilo del borde |
$checkbox-ios-icon-border-radius |
50% |
Radio del borde del checkbox |
$checkbox-ios-icon-checkmark-width |
1px |
Ancho del borde de la casilla de verificación |
$checkbox-ios-icon-checkmark-style |
solid |
Estilo de la casilla de verificación |
$checkbox-ios-icon-checkmark-color |
color-contrast($colors-ios, $checkbox-ios-background-color-on) |
Color del icono de la casilla de verificación |
$checkbox-ios-disabled-opacity |
.3 |
Opacidad del checkbox cuando está deshabilitado (disabled) |
$checkbox-ios-item-start-margin-top |
$item-ios-padding-media-top |
Margen izquierdo del checkbox |
$checkbox-ios-item-start-margin-end |
$item-ios-padding-end |
Margen derecho del elemento |
$checkbox-ios-item-start-margin-bottom |
$item-ios-padding-media-bottom |
Margen inferior del componente |
Pues más o menos estás son todas las de la manzana.
Por otro lado, las de Android las han excluido en la última versión. Como material design es del propio Google han decidido incluir estás en este sistema operativo. También tengo que decir que son los estilos que utiliza Ionic si compilas aplicaciones para navegador. Aquí las tenéis.
Propiedad | Por defecto | Descripción |
---|---|---|
$checkbox-md-border-bottom-width |
1px |
Ancho del borde inferior |
$checkbox-md-border-bottom-style |
solid |
Estilo del borde inferior |
$checkbox-md-border-bottom-color |
$list-md-border-color |
Color del borde inferior |
$checkbox-md-disabled-opacity |
.3 |
Opacidad cuando el componente está deshabilitado |
$checkbox-md-icon-background-color-off |
$list-md-background-color |
Color de fondo cuando el Checkbox no está seleccionado |
$checkbox-md-icon-background-color-on |
color($colors-md, primary) |
Color de fondo cuando el checkbox está seleccionado |
$checkbox-md-icon-size |
16px |
Tamaño del iconoo |
$checkbox-md-icon-checkmark-width |
2px |
Ancho del icono de la casilla de verificación |
$checkbox-md-icon-checkmark-style |
solid |
Estilo del icono de la casilla de verificación |
$checkbox-md-icon-checkmark-color |
color-contrast($colors-md, $checkbox-md-icon-background-color-on) |
Color del icono de la casilla de verificación |
$checkbox-md-icon-border-width |
2px |
Ancho del borde del icono |
$checkbox-md-icon-border-style |
solid |
Estilo del borde del icono |
$checkbox-md-icon-border-radius |
2px |
Radio del borde del icono |
$checkbox-md-icon-border-color-off |
darken($list-md-border-color, 40%) |
Color del bode del checkbox cuando no está seleccionado |
$checkbox-md-icon-border-color-on |
color($colors-md, primary) |
Color del borde cuando está seleccionado |
$checkbox-md-transition-duration |
280ms |
Duración de la transición de no seleccionado a seleccionado y viceversa |
$checkbox-md-transition-easing |
cubic-bezier(.4, 0, .2, 1) |
Transición del elemento cuando pasa de seleccionado a no seleccionado |
$checkbox-md-item-start-margin-top |
$item-md-padding-media-top |
Margen superior del elemento de casilla de inicio |
$checkbox-md-item-start-margin-end |
36px |
Margen al final del elemento de casilla de inicio |
$checkbox-md-item-start-margin-bottom |
$item-md-padding-media-bottom |
Margen inferior del elemento de la casilla de inicio |
$checkbox-md-item-start-margin-start |
4px |
Margen de inicio de la casilla de verificación de inicio |
$checkbox-md-item-end-margin-top |
11px |
Margen en la parte superior del casillero final |
$checkbox-md-item-end-margin-end |
10px |
Margen al final del elemento de la casilla de verificación final |
$checkbox-md-item-end-margin-bottom |
10px |
Margen inferior de la casilla de verificación final |
$checkbox-md-item-end-margin-start |
0 |
Margen de inicio de la casilla de verificación final |
Ahora vamos a ver unos ejemplos de código que algunos usuarios me han pedido que hable de ellos. ¡Ok, adelante!
Muchos me habéis solicitado que explique cómo puedo poner "checkbox ionic array" en un proyecto. Pues vamos a verlo.
En primer lugar, deberíamos tener una clase que incluya un parámetro que sea booleano. Vamos a poner el ejemplo de un usuario que debe tener un estado "activado" de confirmación por mail. La construcción de la clase os la dejo a vosotros. Vamos a ver lo que nos incumbe que si no esto se hace inmenso.
Por otro lado, debéis tener los objetos cargados en memoria (array relleno) para poder interactuar con ella. Y ahora sí, vamos a ver el ejemplo html:
<ion-list> <ion-item *ngFor="let item of usuario"> ... <ion-label>{{ usuario.nombre }}</ion-label> <ion-checkbox color="dark" [(ngModel)]="{{usuario.activo}}"></ion-checkbox> ... </ion-item> </ion-list>
¿Habéis visto que sencillo es? Ale, ya tienes a tu disposición un "checkbox ionic array" con el que puedes interactuar. También decir que puedes cambiar el valor de cada uno al estar vinculado / binding a un ngModel, al hacerlo cambiará el valor de ese usuario a tiempo real.
Si quisiéramos darle un valor inicial / default value, solo tendríamos que hacerlo de la siguiente manera:
<ion-list> <ion-item *ngFor="let item of usuario"> ... <ion-label>{{ usuario.nombre }}</ion-label> <ion-checkbox color="dark" [(ngModel)]="{{usuario.activo}}" checked="{{usuario.activo}}"></ion-checkbox> ... </ion-item> </ion-list>
Si te fijas, hemos incluido la propiedad checked en estas líneas. Así cuando el componente se muestre por primera vez en pantalla, en caso de que el valor sea verdadero, se verá checked.
Bien, al igual que cualquier otro componente, los checkbox pueden incluirse dentro de una alert cuando lo estás construyendo. Aquí tienes el artículo donde explico, también de manera clara y con ejemplo, cómo puedes hacer uso de este otro componente y meter tus checkbox dentro de una ventana modal.
Si eres de los que le da pereza leer. Aquí te dejo un vídeo en el que podrás ilustrarte si no te ha quedado claro del todo lo que hemos explicado más arriba:
Mira, el logo de tu app es una parte muy importante para aumentar la visibilidad, la descargas y el dinero que genera tu aplicación. Esto es porque es la puerta de entrada desde el listado a la ficha y nosotros hemos hecho una herramienta para mejorarlo. Imagina entender que le hace falta a tu logo para estar entre los logos de las mejores apps. Pues aquí puedes hacerlo. No te espoileo más.
Y ahora si, ya nos despedimos. Nos vemos en el siguiente artículo. ¡Hasta entonces, que vaya bien!