Académique Documents
Professionnel Documents
Culture Documents
raulep1990@gmail.com
albcast26@gmail.com
liluisjose1@gmail.com
1
INDICE
PASO 1--------------------------------------------------------------------------------------------------------------- 1
PASO2---------------------------------------------------------------------------------------------------------------- 4
PASO 3--------------------------------------------------------------------------------------------------------------- 6
PASO 4--------------------------------------------------------------------------------------------------------------- 8
PASO 5--------------------------------------------------------------------------------------------------------------- 9
PASO 6--------------------------------------------------------------------------------------------------------------10
PASO 7--------------------------------------------------------------------------------------------------------------11
PASO 8--------------------------------------------------------------------------------------------------------------14
PASO 9--------------------------------------------------------------------------------------------------------------14
2
PASO 1
Creación de un nuevo Proyecto VSCODE Windows/Linux
Se crea un nuevo proyecto flutter desde la linea de comandos
Se asigna una ruta para la carpeta que contendra el proyecto, en la esquina superior derecha se
selecciona la carpeta raiz donde estara el proyecto.
Mientras se crea el proyecto sera normal observar las siguientes notificaciones emergentes en el
mismo IDE.
1
Si todo ha salido bien y no se ha tenido problema se lucira un entorno como el siguiente:
Prestando atención a que toda la creación y sincronizacion sea correcta al observar la siguiente
notificación:
Para comenzar a probar los emuladores nativos o de vysor que se tiene se puede hacer uso del
comando Flutter: Launch Emulator
2
Posterior a esto se debera seleccionar el tipo de AVD o dispositivo para probar y emular la
aplicación.
Como se puede observar en la imagen anterior se procede a ejecutarlo para que aparezca el
dispositivo emulando junto al entorno de VSCODE asi:
3
PASO2
Ubicación de asistente en las Rutas de trabajo del proyecto de la
aplicación
Esta es la ruta que se crea automaticamente al comenzar un proyecto siendo la que se trabajara la ruta
lib que es donde se encuentra el codigo dart que tiene todos los datos que se necesita para
implementar el diseño y logica de la aplicacion
Creará una carpeta como esta en el proyecto base en la ruta donde te encuentres:
Los archivos que nos importan aquí son los que se encuentran dentro de la carpeta lib/ , que
corresponden a los archivos de la aplicación.
la aplicación se desarrollara desde el archivo main.dart nada mas no se manipulara otro archivo al
menos de momento.
4
Pues existe tambien el archivo pubspec.yaml archivo el cual contiene las dependencias del proyecto
y sus configuraciones. (De este archivo hablaremos más adelante para su aplicacion en el punto del
OIT)
5
PASO 3
Edición de codigo inicial
Apartir de la creacion del proyecto y las carpetas que se generan las mismas carpetas estan sujetas a
la estructura que crea la tecnologia y al tener esta tecnologia similitudes con otras tecnologias y
lenguajes de programacion, al trabajar con Dart la misma ocupa una clase principal desde donde
indexar todas y cada una de las caracteristicas que se necesitan aplicar al proyecto de manera que el
archivo main.dart inicialmente esta conformada por una estructura de codigo como la siguiente:
6
El mismo codigo se editara para poder aplicar el diseño propio para la aplicacion de X y 0 que se ha
planteado para el desarrollo del taller desaciendonos deel codigo original y dejando de momento
este:
7
PASO 4
Se procede a crear la clase de estado de la aplicacion es decir donde se indexa el metodo de
construccion de la aplicacion marcando como estado todos las actividades que tenemos dentro de la
misma, siendo estas principalmente la manipulación y construcción del tablero que hay dentro del
widget principal que sera creado a partir de librerias y metodos de dibujo pero para definir la misma
se establece mediante la clase estado la cual es la siguiente:
Cabe destacar que la anotacion @override solo señala que la función también se define en una clase
ancestral, pero se está redefiniendo para hacer otra cosa en la clase actual. También se utiliza para
anotar la implementación de un método abstracto. Es opcional de usar pero recomendado, ya que
mejora la legibilidad. Y en State<StatefulWidget> createState() creara el estado o registro de
estados que contendra todas las actividades de la aplicacion desde pulsaciones o tokens hasta la
construccion de la misma. Y en la parte del return _HomePageState(); es un constructor que se
indexa de la clase que contruira el widget y le dara vida a la aplicacion con las funciones que se
indexen en ella.
Luego de las clases anteriores se procede a crear la clase generica que si bien es cierto no tendra nada
que mostrar pues el widget de construccion no se ha definido pero si se ha dicho a la clase de
construccion de el modelo mediante la linea class _HomePageState extends State<HomePage>
que la clase de construccion estara vinculada, sincronizada y heredada a la clase principal de estados
de la aplicacion donde se vuelve a utilizar @override porque la funcion de Widget contendra el
estado de la homepage o pagina de inicio que ira marcando todas las actividades
8
PASO 5
Ahora dentro de esta misma clase _HomePageState crearemos un andamio o estructura en base a un
tablero tradicional de lo que es un juego de X y 0 que como se sabe son 4 lineas interceptadas a la
mitad 2 en horizontal y 2 en vertical respectivamente, concentrandonos de momento en hacer el
andamiaje de la pantalla principal es decir el tablero de X y 0, configurando al mismo tiempo con
metodos de diseño propios del widget generico que se creo con el proyecto.
Bien de momento esta es la parte de codigo que se implementara a manera de comprobar junto con el
asistente que todo esta funcionando bien y de acuerdo a las propiedades del Widget, viendose en la
pantalla de la aplicacion 2 cambios no significativos pero si importantes como lo es el titulo de la
barra de inicio o el encabezado de la aplicacion que la misma va entre comillas simples ‘’ mismas
que ocupan el espacio en blanco, para dicho espacio se coloca el texto que desee, la aplicacion de
algunas propiedades estan descritas en el codigo Dart que se envio, pero tambien se brindara una
descripcion de propiedades como las siguientes:
9
PASO 6
Bien a continuacion aprovecharemos de que funciona la clase principal con la muestra en pantalla y
construiremos la funcion _construlletablero(){} de manera vacia para que se vaya mostrando el
dibujo de las celdas que mostraran todos los caracteres del X y O
Se muestra como _buildElement() de momento porque fue cuando se empezo a crear la aplicacion
antes de hacer la documentacion pero la de construlle tablero lleva las mismas propiedades algunas
las describire aqui:
Return Container(): un widget de uso común está compuesto por varios widgets responsables
del diseño, pintado, posicionamiento y dimensionado. Específicamente, Container está
compuesto por widgets LimitedBox, ConstrainedBox, Align, Padding, DecoratedBox, y
Transform widgets.
Shape: BoxShape: es una tecnica usada en flutter para mostrar un dibujo o que una simple linea
tome una forma geometrica especifica que puede ser un rectangulo, cuadrado, triangulo, circulo
etc. De manera que al usar la propiedad shape del container le estamos diciendo que usaremos
un dibujo y la forma especifica del mismo es una caja la cual es BoxShape que tiene multiples
propiedades de dibujo geometricas que se adaptan de acuerdo a la pantalla en que estan, es decir
no es necesario dar medidas ni nada por el estilo. La propiedad que usaremos sera de rectangulo
la misma ira incertada el texto inicial para el caso sera X como forma de prueba.
Border: Border.all(): se aplica un borde al dibujo el cual se aplica de manera total, para que
remarque toda la pantalla
Style: TextStyle(): es una propiedad de estilo de widget que sirve para especificar propiedades
visuales del mismo, si se fijan hasta se puede decir que se parece mucho a CSS en cuanto a la
definición de sus propiedades, con la diferencia que aqui se indexa el diseño y se edita al mismo
tiempo.
10
PASO 7
Ahora implementaremos las propiedades que definimos en nuestra funcion de construccion para
empezar a mapear la grid o el tablero para hacerlo procedemos a agregar este condigo a partir o
despues mejor dicho de la linea child: Text (clase _HomePageState) que esta definida como texto
la pasaremos a Columna en esta linea asi:
De momento tendremos esta asi y comenzaremos a emplear la parte complementaria para que se
muestre la aplicacion con el tablero de X y 0
Bien de momento lo nuevo que hay en el codigo es la propiedad Row (fila) que ira construyendo fila
a fila cada nuevo elemento del tablero de momento este tablero incorpora una propiedad que es
children la misma es propia de flutter y sirve para llevar multiples propiedades de un widget para el
caso el widget es Column y las propiedades son las filas que a su vez contienen propiedades de
contruccion que son los parametros de la funcion _BuildElement() que es el equivalente a
_construyetablero para el mismo mostrar un resultado de aplicacion como este:
11
Como se puede observar no esta centrado del todode manera que procedemos a indexar una
propiedad de la columna para centrarla y luego la misma se le pasara a cada fila quedando
inicialmente asi:
Estas misma propiedad se aplica a las demas filas con una pequeña diferencia que hay una propiedad
min incertada entre ambas esta misma se usa para reducir el espacio que hay entre cada columna al
minimo es decir un autoajuste.
De manera que el codigo final queda como aparecera a continuacion:
12
Dando un resultado como el siguiente:
Luego en el _construlletablero van indexados los parametros de plano cartesiano para ubicar las
filas y columnas
13
PASO 8
Procederemos a crear una matriz al inicio del widget para poder ir llenando los espacios vacios
dentro de la aplicacion con X y 0 de acuerdo a las pulsaciones del usuario de esta manera:
Aqui tenemos nuestra matriz y nosotros la inicializamos al decir que tiene 3 filas que son las
propiedades Row que pasan al parametro _matrix y luego por encima de la misma matris que
contiene las filas decimos que las mismas incrementan por que llevan indexadas 3 columnas
_matrix[i]=List(3); y cada columa tiene dentro de si un valor de vacio o espacio en blanco que se
rellenara con las pulsaciones del usuario.
Pero para que esto funcione necesitamos implementar un metodo para rellenar el recuadro y otro par
aque reconozca las pulsaciones del usuario pero primero tenemos que extablecer un parametro de
inicializacion de ultima pulsacion registrada asignarle un valor, de manera que en medio de las lineas
de contruccion del widget y el widget se establecera esta variable:
PASO 9
Se implementa la clase cambio de valores debajo del metodo de construccion de matriz asi:
14
Aqui automaticamente ira rellenando los
espacios vacios de el tablero.
NOTA: No funcionara eventualmente
sino hacemos las modificaciones
pertinentes a las propiedades de
texto que estaban anteriormente
Como se recuerdan el widget de texto estaba establecido como X pero sale mejor cambiarlo y dejarlo
con la variable _matrix[i][j], que esta tomando los valores de la matriz inicial contando las filas y
columnas respectivamente.
15
16