• HOME
  • CÓDIGO
    • HTML
    • CSS
    • jQuery
    • Javascript
    • MGPanel
    • Firebase
    • Flutter
    • NodeJS
    • PHP
    • Servidores
    • MongoDB
    • #TutoExpress
  • MÁSTER WEB
  • SOBRE MI
  • CONTACTAME
  • HOME
  • CÓDIGO
  • MASTER EN PROGRAMACIÓN
  • SOBRE MI
  • CONTACTAME

flutter app android ios code

Eloy Manuel | 4 de diciembre de 2020

Personaliza el intro de tu aplicación Flutter

Coloca tu Logo y anima el intro de tu aplicación Flutter, ejemplo definitivo

Hola Programador... Si eres de los que se la pasa viendo y descargando app para tener ideas y así aplicarlas a sus desarrollos, te tengo una buena noticia, hoy te voy a enseñar a personalizar el intro a tu aplicación Flutter. 

Lo primero que vamos hacer es crearnos un archivo (en mi caso lo cree dentro de la carpeta page que cree dentro de lib para tener todo un poco más organizado) y lo llamamos splash.dart (o bueno el nombre que tu quieras intro.dart, lo que sea).

Iniciamos creando la estructura básica de nuestro archivo:

import 'package:flutter/material.dart";

class SplashScreen extends StatefulWidget {
SplashScreen({Key key}) : super(key: key);

@override
_SplashScreenState createState() => _SplashScreenState();
}

class _SplashScreenState extends State {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(),
);
}
} 

En mi caso voy a importar la librería de dart:async y la verdadera página de inicio de mi aplicación que puede ser el login o el home (para este ejemplo los enviaremos luego de unos segundos a home.dart)

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:pruebas_flutter/page/home.dart';

Ahora vamos a iniciar el State de la aplicación, justo después de nuestra clase _SplashScreenState, ahi es donde vamos a aplicar una animación a nuestro intro, para eso declaramos algunas variables que nos servirán para obtener el efecto deseado:

 Timer _timerAnima;
Timer _timer;
var _altura;
bool select = false;

@override
void initState() {
     super.initState();
     _altura = 1000.0;
     _timerAnima = Timer(const Duration(milliseconds: 2000), _cambiar);
     _timer = Timer(const Duration(milliseconds: 2800), _onLogin);
}

Ahora agregamos el dispose() para liberar los recursos utilizados:

@override
void dispose() {
_timer.cancel();
_timerAnima.cancel();
super.dispose();
}

Luego vamos a crear las funciones _cambiar que es la animación que estamos realizando y _onLogin que es donde hacemos la redirección al home de nuestra aplicación:

void _onLogin(){
if(mounted){
Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: (BuildContext context) => HomePage())
);
}
}
void _cambiar() {
setState(() {
select = !select;
});
}

Por último actualizamos el return de nuestro build y le aplicamos el widget AnimatedContainer() al body del Scaffold:

return Scaffold(
body: AnimatedContainer(
width: select ? MediaQuery.of(context).size.width : MediaQuery.of(context).size.width,
height: select ? 0.00 : _altura,
color: select ? Colors.black : Colors.blue,
duration: Duration(seconds: 2),
curve: Curves.fastOutSlowIn,
child: Center(
child: FlutterLogo(size: 100),
),
),
);

Ahora todo nuestro código completo quedaría así:

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:pruebas_flutter/page/home.dart';

class SplashScreen extends StatefulWidget {
SplashScreen({Key key}) : super(key: key);

@override
_SplashScreenState createState() => _SplashScreenState();
}

class _SplashScreenState extends State {
Timer _timerAnima;
Timer _timer;
var _altura;
bool select = false;

@override
void initState() {
super.initState();
_altura = 1000.0;
_timerAnima = Timer(const Duration(milliseconds: 2000), _cambiar);
_timer = Timer(const Duration(milliseconds: 2800), _onLogin);
}

@override
void dispose() {
_timer.cancel();
_timerAnima.cancel();
super.dispose();
}

void _onLogin(){
if(mounted){
Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: (BuildContext context) => HomePage())
);
}
}

void _cambiar() {
setState(() {
select = !select;
});
}

@override
Widget build(BuildContext context) {
return Scaffold(
body: AnimatedContainer(
width: select ? MediaQuery.of(context).size.width : MediaQuery.of(context).size.width,
height: select ? 0.00 : _altura,
color: select ? Colors.black : Colors.blue,
duration: Duration(seconds: 2),
curve: Curves.fastOutSlowIn,
child: Center(
child: FlutterLogo(size: 100),
),
),
);
}
}

 Recuerda que para que esto funcione debes agregar este archivo splash.dart a tu archivo main.dart y colocarlo como tu initialRoute algo más o menos así:

return MaterialApp(
    title: 'App de Pruebas',
    home: HomePage(),
    initialRoute: 'splash',
    routes: {
       'splash' : (BuildContext contex) => SplashScreen(),
       'home' : (BuildContext contex) => HomePage(),
     },
);

Ya con esto al arrancar nuestra app llamaremos primero el archivo splash.dart este hará una animación que pasa de tener el fondo azul a pantalla completa para irse colocando más pequeño y  con un azul más oscuro hasta que a los 2800 milisegundos se redireccionará a la página de HomePage.

 

Tags: flutter, app movil, aplicaciones móviles, programación app, android, ios,
Una línea de Código <3 a la vez - Flutter - MongoDB - NodeJS - PHP
Una línea de Código <3 a la vez - Flutter - MongoDB - NodeJS - PHP

unalineadecodigo.com/post/personaliza-el-intro-de-tu-aplicacion-flutter

Lo más visto

Comprobar conexión a internet en tu aplicación de Flutter

flutter app android ios code 25 de febrero de 2020

¿Cómo saber si mi aplicación perdió la conexión a Internet?...
Seguir Leyendo

imagen-p

Comprobar conexión a internet en tu aplicación de Flutter

flutter app android ios code 25 de febrero de 2020

¿Cómo saber si mi aplicación perdió la conexión a Internet?...
Seguir Leyendo

Crear y creer, una sin la otra no son nada

lovecode code 26 de Febrero de 2020

Cada mañana me despierto pensando que voy a inventar hoy, o como puedo hacer mejor hoy lo que estaba haciendo ayer......
Seguir Leyendo

imagen-p

Crear y creer, una sin la otra no son nada

lovecode code 26 de Febrero de 2020

Cada mañana me despierto pensando que voy a inventar hoy, o como puedo hacer mejor hoy lo que estaba haciendo ayer......
Seguir Leyendo

Instalar certificado SSL en un servidor Linux con NodeJS

nodejs servidores code 29 de Septiembre de 2018

Aquí te dejo los pasos para instalar un certificado de seguridad SSL en un servidor Linux con NodeJS...
Seguir Leyendo

imagen-p

Instalar certificado SSL en un servidor Linux con NodeJS

nodejs servidores code 29 de Septiembre de 2018

Aquí te dejo los pasos para instalar un certificado de seguridad SSL en un servidor Linux con NodeJS...
Seguir Leyendo

El amor por el código sí existe!

lovecode code 23 de Febrero de 2020

No se trata de cosas vanales o simplemente enamoramiento pasajero, el código te hace......
Seguir Leyendo

imagen-p

El amor por el código sí existe!

lovecode code 23 de Febrero de 2020

No se trata de cosas vanales o simplemente enamoramiento pasajero, el código te hace......
Seguir Leyendo

Sobre Mi

  • ¿Quién soy?
  • Noticias

Academia

  • Master en Programación
  • MGPanel desde Cero
  • Desarrollo de Proyectos
  • Master en Ventas Web

Código

  • Firebase
  • NodeJS
  • PHP
  • Servidores
  • MGPanel
  • MongoDB
  • Javascript
  • jQuery
  • CSS
  • HTML5
  • Flutter

Sígueme

© Todos los derechos reservados 2022. Hecho con por Eloy Manuel con MGPanel