Diferencia entre revisiones de «Flutter StatefulWidget. Conceptos»

De MediaWiki
Ir a la navegación Ir a la búsqueda
Línea 1: Línea 1:
 
==Introducción==
 
==Introducción==
 +
 +
* Más información en:
 +
:* https://flutter.dev/docs/development/ui/interactive
 +
:* https://api.flutter.dev/flutter/widgets/StatefulWidget-class.html
 +
 +
  
 
* Hasta ahora hemos usado los StatelessWidget para todo.
 
* Hasta ahora hemos usado los StatelessWidget para todo.
 
: Este tipo de Widget:
 
: Este tipo de Widget:
−
:* No permiten guardar ningún tipo de dato en forma de variable y cuando definimos algo a nivel de clase siempre debe estar asociado al modificador final  o const.  
+
:* No permite guardar ningún tipo de dato en forma de variable y cuando definimos algo a nivel de clase siempre debe estar asociado al modificador '''final''' o '''static const'''.  
−
:: No impide compilar la aplicación y aparecerá un Warning en la definición del Widget. Un ejemplo de uso sería cuando tenemos un formulario y queremos guardar lo escrito por el usuario en una variable. Esto no lo podríamos realizar con este tipo de Widget.
+
:: Si no se pone dicho modificador, no impide compilar la aplicación y aparecerá un Warning en la definición de la Clase (el nombre de la clase aparecerá subrayada).
−
:* No se pueden 'redibujar' para hacer que reflejen un cambio que pueda darse por programación. Imagináos el caso de que busquéis datos por Internet y se carguen nuevos datos en la lista en la que se base un ListView para visualizar el contenido...
+
:: Un ejemplo de uso sería cuando tenemos un formulario y queremos guardar lo escrito por el usuario en una variable. Esto no lo podríamos realizar con este tipo de Widget.
 +
:* No se pueden 'redibujar' para hacer que reflejen un cambio que pueda darse por programación. Imagináos el caso de que busquéis datos por Internet y se carguen nuevos datos en la lista en la que se basa un ListView para visualizar el contenido...
  
  
Línea 15: Línea 22:
  
 
<br />
 
<br />
−
 
+
'''Código explicativo del vídeo'''.
 
:<syntaxhighlight lang="java" enclose="div" highlight="31,37" >
 
:<syntaxhighlight lang="java" enclose="div" highlight="31,37" >
 
import 'package:flutter/material.dart';
 
import 'package:flutter/material.dart';
Línea 83: Línea 90:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
 +
<br />
 +
==Ejemplo contador==
 +
 +
* Podemos analizar ahora el ejemplo 'Hola Mundo' que aparece cuando se instala Flutter y que podemos visualizar en la [https://dartpad.dev/?null_safety=true&id=1a28bdd9203250d3226cc25d512579ec página  dartpad.dev]
  
  

Revisión del 20:02 19 ago 2021

Introducción

  • Más información en:


  • Hasta ahora hemos usado los StatelessWidget para todo.
Este tipo de Widget:
  • No permite guardar ningún tipo de dato en forma de variable y cuando definimos algo a nivel de clase siempre debe estar asociado al modificador final o static const.
Si no se pone dicho modificador, no impide compilar la aplicación y aparecerá un Warning en la definición de la Clase (el nombre de la clase aparecerá subrayada).
Un ejemplo de uso sería cuando tenemos un formulario y queremos guardar lo escrito por el usuario en una variable. Esto no lo podríamos realizar con este tipo de Widget.
  • No se pueden 'redibujar' para hacer que reflejen un cambio que pueda darse por programación. Imagináos el caso de que busquéis datos por Internet y se carguen nuevos datos en la lista en la que se basa un ListView para visualizar el contenido...





Código explicativo del vídeo.

import 'package:flutter/material.dart';

class EjemploStateLess extends StatelessWidget {
  int _valor = 0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('StateLessWidget'),
        ),
        body: _boton()
    );
  }

  Widget _boton(){
    return Center(child: TextButton(child:Text('Presiona $_valor'),
                                    onPressed: (){
                                        print('pulsado $_valor');
                                        _valor = _valor + 1 ;
                                    },
                                    style: TextButton.styleFrom(backgroundColor: Colors.amber),
                                    )
                  );

  }
}



class EjemploStateful extends StatefulWidget {

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

class _EjemploStatefulState extends State<EjemploStateful> {
    int _valor = 10;

    @override
    Widget build(BuildContext context) {
      return Scaffold(
          appBar: AppBar(
            title: Text('appbarTitle'),
          ),
          body: _boton()
      );

    }
    Widget _boton(){
      return Center(child: TextButton(child:Text('Presiona valores $_valor'),
        onPressed: (){
          print('pulsado $_valor');
          setState(() {
            _valor++;
          });
        },
        style: TextButton.styleFrom(backgroundColor: Colors.amber),
        )
      );

    }
}



Ejemplo contador

  • Podemos analizar ahora el ejemplo 'Hola Mundo' que aparece cuando se instala Flutter y que podemos visualizar en la página dartpad.dev





Enlace a la página principal de la UD4

Enlace a la página principal del curso




-- Ángel D. Fernández González -- (2021).