Aitor Sánchez - Blog - Nov. 2, 2023, 12:47 p.m.
¿Pensando en realizar una implementación de la librería WheelSelector Ionic en tu aplicación? O, quizás ya sabes cómo se hace, pero aún te falta conocer algún detalles sobre alguna función o campo de clase para terminar de echarla a andar ¿verdad?
Mi nombre es Aitor Sánchez, soy desarrollador de apps desde 2014, y en este artículo te enseñaré a realizar, de manera práctica y aplicable, la instalación, integración y configuración del componente WheelSelector.
Pero antes de continuar, esta es la Flutter Mafia. Es mi newsletter donde tu vas a aprender a hacer apps y a ganar dinero con ellas 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.
Y ahora si, comenzamos. Let´s go!
En sí, se trata de un picker, o select, que nos permitirá agregar varias columnas de selección y luego recuperar esto datos. Veamos un pequeño vídeo que he sacado del curso para que veáis a que me refiero si es que no lo conocéis:
[video width="1920" height="1080" mp4="https://como-programar.net/wp-content/uploads/2020/09/Vdeo_nuevo_.mp4"][/video]
Cómo todos los componentes que están desacoplados del core del sistema, necesitamos instalarlo. Para ello vamos a utilizar las dos siguientes líneas de consola:
$ ionic cordova plugin add cordova-wheel-selector-plugin
$ npm install --save @ionic-native/wheel-selector@4
La primera instalará el plugin de Cordova para la comunicación con la parte nativa del sistema donde se esté ejecutando nuestra app.
La segunda será el código que hará de puente entre el plugin y el código de nuestra app.
Para que podamos utilizar este componente en nuestra app, necesitamos agregarlo a los providers de nuestro componente. Lo haremos de la siguiente manera:
providers: [
…,
WheelSelector,
…
]
Recuerda que no será necesario agregarlo a los providers globales que están en “AppModule.ts”. Es mejor opción ponerlos en el módulo del componente que los vaya a usar.
De esta manera incurrimos en buenas prácticas de desarrollo y en un mejor rendimiento de nuestra app.
Las plataformas soportadas por este módulo, aunque obvias, serán las siguientes:
Al tratarse de un selector móvil, lo normal es que solo se pueda usar en el móvil.
Vamos a pasar a lo que interesa, sabes cómo rula esto del WheelSelector. Pero antes, y cómo os tengo acostumbrados, veamos previamente un ejemplo de código y luego lo comentamos.
import { WheelSelector } from '@ionic-native/wheel-selector';
constructor(private selector: WheelSelector) { }
...
const jsonData = {
numbers: [
{ description: "1" },
{ description: "2" },
{ description: "3" }
],
fruits: [
{ description: "Pera" },
{ description: "Plátano" },
{ description: "Mandarina" }
],
firstNames: [
{ name: "Aitor", id: '1' },
{ name: "Mari", id: '2' },
{ name: "Lorena", id: '3' },
{ name: "Manolo", id: '4' },
{ name: "Jose", id: '5' }
],
lastNames: [
{ name: "Martínez", id: '100' },
{ name: "Pérez", id: '101' },
{ name: "Sánchez", id: '102' },
{ name: "García", id: '103' },
{ name: "Jiménez", id: '104' }
]
};
...
// Una selección de número básica, el índice será lo que se capture desde el resultado.
selectANumber() {
this.selector.show({
title: "¿Cuantos?",
items: [
this.jsonData.numbers
],
}).then(
result => {
console.log(result[0].description + ' at index: ' + result[0].index);
},
err => console.log('Error: ', err)
);
}
...
// Una selección básica, Los valores por defecto serán: '3' 'Plátano'
selectFruit() {
this.selector.show({
title: "¿Cuanta?",
items: [
this.jsonData.numbers, this.jsonData.fruits
],
positiveButtonText: "Ok",
negativeButtonText: "Nope",
defaultItems: [
{index:0, value: this.jsonData.numbers[2].description},
{index: 1, value: this.jsonData.fruits[3].description}
]
}).then(
result => {
console.log(result[0].description + ' ' + result[1].description);
},
err => console.log('Error: ' + JSON.stringify(err))
);
}
...
//Algo un poco más elaborado, pruébalo
selectNamesUsingDisplayKey() {
this.selector.show({
title: "Who?",
items: [
this.jsonData.firstNames, this.jsonData.lastNames
],
displayKey: 'name',
defaultItems: [
{index:0, value: this.jsonData.firstNames[2].name},
{index: 0, value: this.jsonData.lastNames[3].name}
]
}).then(
result => {
console.log(result[0].name + ' (id= ' + this.jsonData.firstNames[result[0].index].id + '), ' +
result[1].name + ' (id=' + this.jsonData.lastNames[result[1].index].id + ')');
},
err => console.log('Error: ' + JSON.stringify(err))
);
}
Este es un ejemplo de código muy sencillo, pero totalmente funcional y útil en caso de que le cambies los datos por los que tú quieras.
Ahora vamos a pasar a profundizar un poco más, para que puedas extender su funcionalidad tanto cómo necesites, y nos permita el sistema. Aunque siempre podemos extenderla nosotros un poco más.
En este caso solo contamos con dos funciones y una interfaz. Recuerda que solo mostraré funciones propias. Si alguna está en el padre, aquí no aparecerá.
Básicamente, hace que se muestre el selector en nuestro dispositivo con los datos que le hemos facilitado.
Fuerza que el selector se esconda. En Android no será necesario ya que pulsaremos fuera y se esconderá. En iOS será necesario hacerlo explícitamente en algunas ocasiones.
Cómo hemos visto arriba, veamos los campos que tiene:
Cómo he dicho antes, vamos a ver los campos que aquí llegan. Aunque en realidad solo tenemos uno y llegará con los datos de las interfaces que nosotros hemos creado y enviado a través del options del método show().
Mira, en el momento que tu mejoras el logo de una app que tengas publicada en Google Play, las descargas y los ingresos que esta aplicación genera aumentan. Esto es así. Mejor logo es igual a más dinero.
Basándonos en esto, hemos creado esta herramienta que te permite evaluar, optimizar y mejorar los logos de tus apps para que reciban más descargas. No te quiero espoilear, dentro hay un video explicativo. Entra en el enlace.
Geniete, espero haberte ayudado a comprender este componente y nos vemos en el siguiente artículo. Hasta entonces ¡que te vaya bien!