Stateless vs Stateful Widgets

Una explicación detallada de la diferencia entre los widgets Stateless y Stateful en Flutter.

Flutter Widgets

En Flutter, todo es un widget. Los widgets son los bloques de construcción fundamentales de la interfaz de usuario en Flutter y cada widget es una clase inmutable en Dart. Hay dos tipos principales de widgets en Flutter: StatelessWidget y StatefulWidget.


StatelessWidget


Un StatelessWidget en Flutter es un widget que describe parte de la interfaz de usuario que puede cambiar dependiendo de la configuración y el contexto. No tiene estado mutable que cambie durante su vida útil. Es inmutable, lo que significa que una vez que se dibuja en la pantalla, no puede cambiar su estado mediante ninguna operación. Ejemplos de widgets sin estado son Icon, IconButton y Text.


class MyStatelessWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Text('Hola Mundo'),
    );
  }
}

StatefulWidget


Un StatefulWidget, por otro lado, es mutable. Un StatefulWidget puede cambiar su apariencia y estado durante su vida útil. Puede redibujarse en la pantalla con cambios en los datos. Ejemplos de widgets con estado son Checkbox, Radio, Slider, InkWell, Form y TextField.


class MyStatefulWidget extends StatefulWidget {
  @override
  _MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State {
  bool _isChecked = false;
  @override
  Widget build(BuildContext context) {
    return Checkbox(
      value: _isChecked,
      onChanged: (bool value) {
        setState(() {
          _isChecked = value;
        });
      },
    );
  }
}