Analicemos nuestro código generado y agreguemos modificaciones para ir aprendiendo Flutter.
En la barra izquierda donde tenemos el explorador de archivos, encontramos la siguiente estructura de carpetas.
VS Code

Android Studio

hello_app
ā³android # Configuraciones propias para app android.
ā³ios # Configuraciones propias para app ios.
ā³lib # Codigo de la aplicación.
ā³main.dart
ā³test # Nuestros test.
ā³web # Configuración del proyecto web.
pubspec.yaml
Comencemos con el archivo pubspec.yaml
el cual contiene la información del proyecto, dependencias y librerĆas externas que utiliza. Vamos a reemplazarlo por el siguiente:
hello_app/pubspec.yaml
El siguiente archivo bÔsico en cualquier aplicación es el main
.
dart
el cual define la pantalla que mostraremos, asà como su lógica. Aquà encontraremos la definición de cada pantalla asà como su comportamiento. Vamos a reemplazar el contenido con lo que se muestra a continuación:
hello_app/lib/main.dart
El IDE nos permite directamente ejecutar nuestro código dando click en un botón para correr nuestro programa, el cual internamente compilarÔ y ejecutarÔ nuestro proyecto.
VS Code

Android Studio

Al dar clic en el botón el IDE empezarÔ a compilar y ejecutar nuestra aplicación, que en este caso se ejecutarÔ en el explorador web.

Analizando el código
Ahora vamos a revisar mƔs a detalle cada archivo que hemos creado.
hello_app/pubspec.yaml
name: hello_app
description: A new Flutter project.
publish_to: 'none'
version: 1.0.0+1
name: Por buena prÔctica y para evitar errores de compilación se recomienda mantener el mismo nombre que la carpeta que lo contiene.
description: La descripción de nuestro proyecto.
publish_to: ‘none’ significa que serĆ” un proyecto privado.
version: La versión de nuestra aplicación (La debemos de ir cambiando con cada nueva versión que vayamos liberando).
environment:
sdk: '>=2.12.0 <3.0.0'
enviroment: Es la versión de Dart con la cual estaremos trabajando.
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
Agregamos las dependencias que utilizarÔ nuestra aplicación.
flutter: Agregamos Flutter SDK como parte de las dependencias.
cupertino_icons: Agregamos los iconos de Cupertino Widget. (No te preocupes, este tema lo cubriremos mas adelante).
flutter:
uses-material-design: true
uses-material-design: Habilitamos los iconos de Material Design de Google para poder utilizarlos en la app.
Ahora revisaremos el archivo main.dart
que es el punto de inicio de nuestra aplicación.
hello_app/lib/main.dart
import 'package:flutter/material.dart';
import: Para importar el paquete de Material Design icons y poder utilizarlos en la pantalla.
void main() {
runApp(MyApp());
}
Cuando la app se inicie ejecutarƔ el mƩtodo main
(), el cual contiene el comportamiento y apariencia de la aplicación.
La vida es un widget
En flutter todo es un widget. Existen 2 tipos de widgets: Widget con estado (StatefulWidget) y sin estado (StatelessWidget).
class MyApp extends StatelessWidget {
En este caso estamos definiendo una clase llamada MyApp que por herencia serĆ” un tipo de clase StatelessWidget (Widget sin estado).
Debemos de crear el mƩtodo build
el cual se encarga de dibujar la apariencia de nuestro componente en pantalla. Cada Pantalla tiene 1 o mƔs de estos componentes, cada uno de los cuales debe de ser diseƱado por nosotros.
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter App Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(
title: Text("Flutter Screen title"),
),
body: Center(child: Text("Hola Mundo!"))));
}
}
MaterialApp
: Creamos una instancia de esta clase para dar el diseƱo general de aplicación movil personalizada con el tĆtulo (title
) y el tema color azul. Este objeto forma parte del paquete material que importamos en la primera linea.
En este caso la propiedad title en la clase MaterialApp se utiliza para asignar el tĆtulo de la pestaƱa en la pĆ”gina web o en el tĆtulo que se muestra en el administrador de tareas de Android.
MaterialApp(
title: 'Flutter App Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
)
En Flutter se le llama programación declarativa al tipo de código que escribimos para crear nuestra Interfaz de usuario (User Interface – abreviado UI), en la cual creamos nuestro componente con los atributos de title
, theme
dentro de nuestro componente principal y agregamos componentes hijos que a su vez cuentan con sus propiedades y sus componentes hijos.
return MaterialApp(
....
home: Scaffold(
appBar: AppBar(
title: Text("Flutter Screen title"),
),
body: Center(child: Text("Hola Mundo!"))));
Mediante la propiedad home
del objeto MaterialApp
indicamos la pantalla inicial de nuestra aplicación, que en este caso es un componente Scaffold
.
Scaffold
Widget es un contenedor con la estructura bƔsica de una app, tiene su propiedad appBar
con la cual podemos personalizar la toolbar de nuestra aplicación. En este caso le asignaremos el tĆtulo que deseemos mostrar en nuestra pantalla "Flutter Screen title"
.
Scaffold
tambien tiene la propiedad body:
con la cuƔl podremos asignar el contenido de nuestra app, usualmente es todo lo que se ve debajo de la toolbar hasta donde se termina la pantalla. En este caso estamos agregando un componente de diseƱo de centrado (Center)
que tiene un hijo (child:)
de tipo Texto (Text)
que mostrara nuestro texto en la app.
Web

Android

Referencias:
https://api.flutter.dev/flutter/material/material-library.html
https://api.flutter.dev/flutter/material/Scaffold-class.html
¿Te estÔ gustando este curso? Aquà hay mÔs temas que otras personas estÔn viendo en este momento.