black claw hammer on brown wooden plank
0

Un ListView sin la función builder, nos devolverá una lista de Widgets donde los childrens se han construido de forma permanente.

Cuando agregamos la función builder(), ListView mostrará los childrens bajo demanda. Es decir que cuando los Widgets no quepan en pantalla o no se muestren, serían destruidos. Y cuando hagamos scroll o sea necesario mostrarlos, se reconstruirían cada uno de los widgets según sea necesario.

Para algunos se tiene en cuenta que ListView.builder() se utiliza siempre dentro de un FutureBuilder, esto dependería si nuestra lista es tipo Future o si no esperamos recargar la lista con un SetState(){}.

Equivalencias

ListView.builder() es además un equivalente a lo que se usa en Java/Kotlin y Swift

AndroidiOS
RecyclerViewUICollectionView
Equivalencias de ListView.builder() en otras plataformas

Casos de uso

Listas extensas de contenido. En esto no me refiero a un texto que abarque bastantes líneas, sino que una lista de Widgets indefinidos (por encima de lo que cabe en una pantalla). Por ejemplo: Una lista de noticias, lista de productos de una tienda, lista de archivos, etc.

¿Qué se entiende por contenido dinámico?

A menos que una aplicación sea muy básica y esté creada con fines de aprendizaje, siempre utilizará datos dinámicos, es decir, el contenido de la pantalla cambiará según las acciones del usuario y / o con el cambio en los datos de la red.

Beneficios

  • Optimización del uso de memoria
  • Fluidez a la vista del usuario
  • Etc

Uso de ListView.builder()

Porfavor consulte el siguiente post, donde se explica con mayor detalle algunos ejemplos donde se da uso a Widgets con estado dentro de un ListView.

unFuturista
Vemos el futuro, no para cambiarlo sino para cumplirlo.

Conectar dispositivo android sin cables para probar aplicaciones con Android Studio, VS Code

Previous article

Desplegar aplicación Laravel en un VPS

Next article

You may also like

Comments

Leave a reply

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

More in Flutter