Saltar al contenido

Gestión del estado de Flutter (BloC): widget sin estado vs con estado

Solución:

Tienes razón en que solo puedes usar StatelessWidgets. Solo necesita saber dónde crea su bloque. Algunas formas de creación de instancias son más fáciles de probar que otras, como pasar el bloque a su StatelessWidget como argumento.

Pero para la implementación, me gusta el flutter_bloc biblioteca la mejor: https://pub.dev/packages/flutter_bloc

Incluye BlocProvider que gestiona automáticamente la creación y eliminación de bloques.

Otra cosa a tener en cuenta es que a menudo tendrás que iniciar un evento en un bloque para realizar alguna acción y una StatefulWidget podría ser útil ejecutar eso en el initState método.

Podrías decir en un StatefulWidget:

initState(){
   _myBloc = SomeBloc()..add(SomeEvent());
}

// Then somewhere in your widget tree
BlocProvider<MyBloc>(
  create: (context) => _myBloc,
  builder: (context, state) {},
)

O, en tu StatelessWidget:

BlocProvider<MyBloc>(
  create: (context) => MyBloc()..add(SomeEvent()),
  builder: (context, state) {},
)

Encontrarás lo que funciona mejor para ti, pero con Flutter descubrí que depende principalmente de la situación y el objetivo de una función en particular. No es necesario que se adhiera al hábito de tener que usar siempre un StatelessWidget, pero tiene razón en que es posible.

Solo puede usar el widget sin estado. Pero hay un problema que debe cerrar las transmisiones antes de eliminar la aplicación. Se puede manejar de dos formas:

  1. Primero, puede usar un widget con estado y cerrar flujos de bloque en el método de eliminación de estado.

  2. Usando BlocProvider. En este caso, Bloc Provider es solo un widget con estado. Cierra transmisiones automáticamente. Luego puede usar bloc usando BlocProvider en Stateless Widget.

Pero no significa que no necesitemos widgets con estado. Los widgets con estado son importantes en la animación, por ejemplo. La animación, la entrada de texto o cualquier cambio local en el widget en sí no debe manejarse en bloque u otra administración estatal. es el deber del propio widget.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *