Author: admin

This an Flutter App. Calculina.

Calculina App. It is used to make a quick calculation of the corresponding insulin units for each meal, for people who suffer from diabetes, and need to calculate the units of rapid insulin. With its elegant design, easy and understandable, people can interact with Calculina and understand very quickly how to use the App to get the calculation they need. You can also share this result on the social networks that the device has installed.

 

 

 

  • GetX has 3 basic principles. This means that these are the priority for all resources in the library: PRODUCTIVITY, PERFORMANCE AND ORGANIZATION.

Well, the first concept that we have to keep on mind is  WE DON’T CARE ABOUT THE CONTEXT!!, why??? because getX manages that for us!!…

You do not need context to navigate between routes, so you are not dependent on the widget tree (visualization) for this. You don’t need context to access your controllers/blocs through an inheritedWidget, so you completely decouple your presentation logic and business logic from your visualization layer. You do not need to inject your Controllers/Models/Blocs classes into your widget tree through MultiProviders. For this, GetX uses its own dependency injection feature.

Go to official documentation

Before, I want to show , how this project is structured,

Well , today we are going to explain in detail the first, part of this video, Showing an snackbar using GetX.

1.Step install dependencies :

(Go to  your pubspec.yaml file, in your flutter project)

In this example we are going to need two additional dependencies: folding cell, google_fonts, awesome packages!!

2.Change file Main.dart

class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widgetbuild(BuildContextcontext) {
return GetMaterialApp(
title:’Flutter GetX’,
debugShowCheckedModeBanner :false,
theme:  ThemeData(primarySwatch:Colors.blue,),
home: FoldingCell(),
initialBinding: MyBindings(),);}}

Our Main.dart file should return Get MaterialApp instead of traditional MaterialApp

3.Create a file  call folding_main.dart.

( Now is the time to use the pack folding cell Go to package )In this point, we are going to build , two main widgets, that we need frontWidget and innerWidget to fold and unfold. (see details on github…. https://github.com/Liliana99/my_getx)

Now we need to create our only controller , it so amazing, only for one controller !! ok , let’s go:

4.Create a folder call controllers, into their create a file call main controller.dart. path : lib/controlllers/main_controller.dart

Our controller needs to extends GetxController, it comes from Getx library. We create the get to have access in different places. So it is all, we’ve already injected our controller in the UI.  Goal accomplished, show that GetX does not need to call context to display snackbar!! . In my next articles, we are going to deep will the access with controllers and binding

 

 

 

This plugin adds information overlay.  You can customize the content, you can add one o more contents that you want .Futter plugin Click here to see the video

 

This an simple example to create an one  customize contents.
Future<void>initTargets()
async {
targets.add(TargetFocus(
identify: «Target 1»,
keyTarget: keyButton,
contents: [
ContentTarget(
align: AlignContent.top,
child: Container(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
«Cuidador»,
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.white,
fontSize: 20.0),
),
Padding(
padding: const EdgeInsets.only(top: 10.0),
child: CustomText(data:dataCuidadorText,
style: TextStyle(color: Colors.white,
),
color: Colors.white,
fontSize: 17.0,
),
)
],
),
),),

 

 

……to more information visit the link  https://github.com/RafaelBarbosatec/tutorial_coach_mark

 

 

 

Retomando el gráfico anterior  …

El gráfico anterior, representa la manera de escribir ( en este caso, lenguaje Dart, para Flutter..) como crear una variable y inicializarla. Antes expliquemos brevemente que es una variable?, ok una variable es una referencia que se utiliza en todo lenguaje de programación para guardar un valor.

En nuestro gráfico hemos creado una variable , tipo string , le hemos asignado un valor por medio del operador «=» para la variable que hemos escogido ponerle «name«, esta variable le hemos asignado que sea del tipo «string» para guardar una secuencia de caracteres, en este caso el valor es «Liliana«.  Vamos a la pregunta de este post, ¿ cual es la diferencia entre declaración de variable y inicialización de variable…?

» Declaración de variable » es el proceso de encontrar una variable y asignarle un nombre. La cual podemos usar después .

En cuanto a » Inicialización de variable » es el proceso de asignarle un valor inicial a esa variable.

String  interpolación

En el siguiente video , veremos que es.. , para que se utiliza… y como se utiliza, este concepto en Dart II.

 

 

 

Orientado a Objetos => Veremos en el código las típicas estructura de classes

Classes que dentro tendrán datos y métodos para poder su manipulación.

C-Style Syntax => Similar a C,Java,Javascript,Swift.

Multiple  Entornos => Dart es un lenguaje que se adapta al entorno en el cual se esta ejecutando, por ejemplo si en un  dispositivo móvil se ejecuta una aplicación escrita en lenguaje Dart, no se reflejará ningún cambio en su ejecución, la aplicación funcionará igual que una aplicación escrita en  otras plataformas : como Android o IOS. También puede ejecutarse en cualquier navegador web moderno.  En este link puedes comprobar con un ejemplo , https://www.dartlang.org/guides/get-started

Productividad y Velocidad => Just-intime(JIT) Se puede decir que es el compilador que e ejecuta durante la ejecución del programa , compilando sobre la marcha es decir => Hot Reload.

Vamos a comprobar lo que hemos comentado anteriormente, para hacer esta primera práctica vamos al siguiente sitio https://dartpad.dartlang.org/

DartPad es un servicio gratuito de código abierto para ayudar a los desarrolladores a aprender sobre el lenguaje y las bibliotecas de Dart. El código fuente ingresado en DartPad se puede enviar a los servidores que se ejecutan en Google Cloud Platform para que se analicen en busca de errores / advertencias, se compilen en JavaScript y se devuelvan al navegador.

 Ver en yootube

Explicación en detalle , de nuestro programa anterior.

 

 

En cualquier app moderna, que implique subir una imagén , bien sea de galeria o directamente desde la camára, es prioritario incorporar a nuestro codigo, una libreria que nos permita hacer una captura que sea posible recortar, aumentar o disminuir la imagen, para adaptarla al cuadro de la imagen final!! pues en el caso de flutter , la libreria image_cropper ^0.0.8.

He realizado una pequeña aplicación en flutter, para capturar la imagen según la selección del usuario : galeria o camára, despues se hará el crop de la imagen. Este desarrollo se ha realizado en la plataforma android studio, codigo dart2 , en flutter.

He seguido las instrucciones de este blog Developer-Libs A cotinuación se muestra la funcionalidad de esta mariavillosa libreria , en mi caso , al tener instalado flutter en la plataforma Android Studio, se tiene que poner en el Manifest.xml el activity  «com.yalantis.ucrop.UCropActivity«.

 

Despúes de haber guardado en Android Manifest.xml, podremos guardar en pubspec.yaml , la librería image_cropper: ^0.0.8  (dentro de la plataforma de desarrollo xcode no es necesario guaradar este activity, solo para Android)

 

Esta es la funcionalidad de la libreria – image_cropper – de flutter, podemos alinear la imagen a nuestro gusto, girar, hacer más grande o más pequeño.

 

 

A continuación mostramos la pantalla inicial de la aplicación, tal como la encontraria el usuario :

 

Y finalmente la imagen queda asi:

Ver video en Linkedln    https://www.linkedin.com/feed/update/urn:li:activity:6464827493160353792

Demo de Aplicación realizada en android studio, aqui podemos ver en forma rápida y sencilla autenticar en firebase de google, con email de gmail.

Esta sencilla App, con solo entrar tu cuenta de correo electronico, en este caso hemos utilizado una d egmail, entrando la clave, automáticamente firebase se encarga de la validación de usuario, previamente hemos creado y configurado el proyecto en firebase console.

 

Por si no conocíais al nuevo desarrollo del gigante del buscador, se trata de un framework diseñado para desarrollar sobre él aplicaciones móviles multiplataforma. O lo que es lo mismo, es un entorno de desarrollo que permite crear apps para iOS y Android de forma directa y sin necesidad de adaptaciones posteriores.

Podeis buscar mas detalles en la red, quiero presentaros una pequeña, aplicación demo, realizada en flutter, bajo plataforma Android Studio. Es una entrada limpia , de ingreso de usuario, pasword,  validación en los datos.

Para el usuario , esto podría tener poca importancia , pero para el desarollador será mas dinámico y más productivo , tenemos mas herramientas !!

 

The result is   the same with «from» method  with «just» method. !!

 

From : when we pass into an array or list item, it will issue an array and list that item and subscriber will also take the parameter as an array or list.

Just : it will issue each item in the list (will call onNext times the size of the list in error condition)

Android networking library poderosa biblioteca para hacer llamadas a servidores para bajar cualquier tipo de archivo  , debido a  la eliminación reciente de HttpClient en Android Marshmallow (Android M) hizo obsoleta a otra biblioteca de redes.
Ninguna otra biblioteca hace cada una de estas  cosas, como  :  hacer solicitudes, descargar cualquier tipo de archivo, cargar archivos, cargar imágenes de la red en ImageView, etc. Hay bibliotecas pero están desactualizadas, establecer prioridades, el hecho de  usar Okio, no  sobrecarga de GC en la aplicación de Android. Okio está hecho para manejar la sobrecarga de GC al asignar memoria. Okio hace algunas cosas inteligentes para ahorrar CPU y memoria. Para ver más detalles técnicos de esta gran herramienta os dejo un enlace que contiene más información  https://github.com/amitshekhariitbhu/Fast-Android-Networking

  Vamos   al lio!! 
Bajar una imagen desde el storage de firebase utilizando Android Networkin Library , lo guardaremos en un archivo fisico en el dispositivo ,  (En mi caso lo utilizo para usar la imagen de profile en notificaciones push del App Android).

 

Debemos crear una variable tipo File , en el  OnCreate de tu actividad principal.  File localFile =null;

Creamos una variable tipo File ,  para guardar el archivo , dentro del direcorio . En el  OnCreate de tu actividad principal.  File archivolocal =null;

Creamos una función para crear el directorio local , con la función CrearDirectorio , doy por supuesto, que ya sabemos crear un proyecto en Android Studio, ya tenemos una actividad principal , Creamos una función para crear un directorio localmente, seria asi :

Función para crear directorio local en dispositivo

 

Llamamos la función desde MainActivity  asi :  localFile = CrearDirectorio(this, «imagenesFB»);  Esta instrucción lo que hace es llamar la función CrearDirectorio , enviamos de parámetros el contexto de nuestra activity, «this«, de segundo parámetro enviamos el nombre de nuestro de albúm de imágenes «imagénes FB«, le asignamos el contenido a nuestra variable localFile tipo File .

Agregamos en el archivo build.gradle, la libreria Android Networking

Inicializamos en el OnCreate , con el contexto.

Para no ocupar el hilo principal , al momento de llamar el activity principal, he creado la función tipo AsyncTask, quedaría algo asi:

 

La función se llama BajarImagen1, le enviamos como parámetros,  mSurlShPref  esta variable es tipo String , tiene la dirección url donde se encuentra nuestra imagen , el cotenido de esta variable lo debes declarar asi :

String mSurlShPref  = «https//ubicación donde esta tu imagen»

String  dirPath = Esta variable debe contener la ruta de tu directorio que ya deb estar creado, seria algo asi : «/sd/0/emulated/android/midirectorio»

String  fileName = Esta variable debe contener el nombre del archivo que ya debe estar creado, seria asi : «miarchivo»+».»+»jpg»

Ahora solo nos queda ejecutar en el MainActivity la función , y walla!! busca en tu dispositivo la imagen en la ruta guardada de tu directorio.

 

                                      new BajarImagen1().execute();

Hemos terminado con este mini tutorial , para bajar una imagen desde url , utilizando la libreria Android Networking, como puedes observar, solo tienes que tener una dirección url, donde esta tu imágen, ruta del directorio creado previamente, nombre del archivo con el cual identificarás tu imágen bajada en tu dispositivo.

Cualquier duda sobre este tema, podeis dejar un comentario, responderé tan pronto me sea posible!!. Liliana Jiménez M , ( Desarrollador Android!) .