API
Introducción
Dependiendo de los proyectos de la aplicación, en ocasiones es útil recurrir al hardware del dispositivo.
Normalmente, las dos herramientas más útiles siguen siendo la cámara y el GPS. Estos elementos no son directamente accesibles. Por tanto, es fundamental el uso de dependencias que faciliten su implementación.
En este capítulo, se dan dos ejemplos concretos de cómo utilizar la cámara y el GPS.
Por último, se actualizan los paquetes disponibles en la actualidad que complementan esta oferta, para poder acceder a otras funcionalidades como el giroscopio, el acelerómetro, la batería, etc.
Cámara de fotos
El uso de la cámara no está directamente integrado en el SDK. Es necesario utilizar un paquete especialmente dedicado a esta tarea. Hay varios, pero el equipo de Flutter ha desarrollado el más fiable hasta la fecha. Se trata de image picker. Este paquete tiene una doble función, ya que le permite hacer fotografías y, por lo tanto, utilizar el hardware, pero también puede leer archivos de imagen presentes en el teléfono.
Hasta la fecha, tiene la puntuación máxima de 100.
Aquí está la URL para acceder: https://pub.dev/packages/image_picker
1. Instalación del paquete
El primer paso es, como siempre, modificar el archivo pubspec.yaml en dependencies:
image_picker: ^0.6.4
Tenga cuidado, no olvide hacer clic en Packages get para recuperar esta dependencia y poder usarla más tarde.
2. Actualización de los permisos
Anteriormente, hablamos muy brevemente sobre permisos. Se gestionan en archivos específicos para cada SO. Para Android, el archivo AndroidManifest.xml desempeña este papel, mientras que en iOS, el archivo se llama Info.plist.
Aquí está la ubicación de estos archivos:
-
AndroidManifest.xml:
Raíz del proyecto -> android -> app -> src -> main
-
Info.plist:
Raíz del proyecto -> ios -> Runner
Cuando se usa el paquete image_picker, no hay permisos a añadir para Android. Por otro lado, para iOS, se deberán implementar. Esto es lo que se añade a Info.plist:
<dict>
<key>NSPhotoLibraryUsageDescription</key>
<string>Utilización de la librería de fotos</string>
<key>NSCameraUsageDescription</key>
<string>Utilización de la cámara</string>
...
El primer permiso es NSPhotoLibraryUsageDescription. Da la posibilidad de acceder a la lectura de imágenes en el dispositivo.
Finalmente, NSCameraUsageDescription le permite tomar el control de la cámara y por lo tanto, hacer nuevas fotografías.
Ahora que la configuración está completa, es posible abordar el código.
3. El código...
GPS
El uso del GPS es similar a la forma desarrollada anteriormente para las imágenes.
Tiene que usar un paquete para acceder al chip GPS. En este caso, hay varios más o menos completos.
Entre ellos se encuentra el paquete Flutter Team, gps, versión 0.1.1 hasta la fecha. Presumiblemente, este no es el mejor hoy. Obtiene una puntuación de solo 88 sobre 100. Resulta bastante incompleto, pero sigue siendo muy accesible.
Está disponible aquí: https://pub.dev/packages/gps
La comunidad recurre más al geolocator o location, que tienen una puntuación de 100.
Geolocator está disponible aquí: https://pub.dev/packages/geolocator
Location está disponible aquí: https://pub.dev/packages/location
Para el siguiente ejemplo, se utilizará el paquete location. Es más fácil de usar y más adecuado para principiantes.
1. Instalación del paquete
Para tener acceso a todos los elementos del paquete location, debe estar declarado en el archivo pubspec.yaml:
dependencies:
location: ^3.0.2
Después de guardar esta modificación, todo lo que tiene que hacer es pulsar en Packages get para recuperar las fuentes.
2. Actualización de los permisos
El uso del chip GPS para determinar la ubicación del usuario, requiere permisos. Se deben definir en los archivos AndroidManifest.xml e Info.plist.
Aquí está la ubicación de estos archivos:
-
AndroidManifest.xml:
Raíz del proyecto -> android -> app -> src -> main
-
Info.plist:
Raíz del proyecto -> ios -> Runner
Los permisos a añadir...
Otras API
Hay muchos paquetes y recursos disponibles para controlar el hardware de los dispositivos. Sin querer hacer una lista exhaustiva, es interesante observar la presencia de algunas dependencias útiles:
-
Para el acelerómetro y el giroscopio: sensors del equipo Flutter:
-
Para comprobar el estado de la red móvil y del Wi-Fi u obtener información sobre ella: conectivity del equipo Flutter:
-
Para obtener información sobre el dispositivo (modelo, marca, versión del sistema operativo, etc.): device_info del equipo Flutter:
-
Para obtener información sobre la batería: battery del equipo Flutter:
Estos paquetes cambian más o menos rápidamente en función de las actualizaciones a las que se someten. Antes de elegir un paquete, siempre debe echar un vistazo a lo que se ofrece y verificar que el paquete satisfaga sus necesidades.