Cuando comenzamos a aprender Flutter lo primero que nos llama la atención, sobre todo a los viejos del barrio como yo, es que no hay una forma clara o predefinida por parte de Google de ordenar las cosas dentro de un proyecto Flutter.
Se limitan a decir que dentro de la carpeta lib va tu código y ¡ya! o como mucho, he visto que a veces van un poco mas allá y te dicen que pongas una carpeta src dentro de la carpeta lib y ahí pones tu código. No sé a vosotros, pero esto a mí me mata un poco. Necesito poner orden y este es el motivo de este post.
En este post, describiré mi forma (o una forma) de ordenar el código en nuestros proyectos de Flutter. Como ya digo, es mi sugerencia y para nada está escrita en piedra, por lo que cualquier aportación o sugerencia será bienvenida.
Con Xamarin y Microsoft no tenía esta sensación de «descontrol», dado que la mayoría de los ejemplos aportados en la documentación de Microsoft, llevan el mismo patrón a la hora de ordenar nuestro código dentro del proyecto. Aún así y supongo que, debido a la experiencia, incluso en los últimos proyectos con Xamarin los ordenábamos de una forma un poco distinta a la que propone la misma Microsoft en su documentación.
Partiendo de esta experiencia previa, la ordenación que me gusta seguir en los proyectos de Flutter (y antes en los de Xamarin) es una ordenación basada en la funcionalidad o lógica en lugar de en tipos. Este tipo de estructura u ordenación nos facilita la reutilización y la modularidad del código, por lo tanto se adapta mejor a los cambios, ya que podemos tener módulos independientes que pueden identificarse y modificarse sin necesidad de tocar el resto de funcionalidades. Además, ayuda a tener un árbol de la solución mucho menos vertical y más legible entre otras ventajas.
De esta forma, para mí la estrucutra de un proyecto en Flutter quedaría de la siguiente manera
Básicamente esta sería la estructura básica que creo cuando inicio un proyecto en Flutter y que me ayuda a mantener todas las clases ordenadas y así facilitar el mantenimiento del proyecto a corto y largo plazo.
Cómo nota, para simplificar los imports en los archivos que pueden llegar a crecer mucho con esta organización en carpetas, suelo utilizar lo que llaman un barrel file dentro de cada carpeta, así la carpeta providers, tentrá un barrel file providers.dart que exporta lo necesario a otras clases, providers/providers.dart.
¿Qué opinas de esta ordenación? ¿usarías la misma? ¿qué cambiarías? Estaría bien discutirlo y llegar a la mejor ordenación posible 🙂
Este sitio web utiliza cookies para que tengas la mejor experiencia de usuario. Si continuas navegando, estás dando tu consentimiento para aceptar las cookies y también nuestra política de cookies (esperemos que no te empaches con tanta cookie 😊)