Del proyecto vacío a tener la estructura base lista: creación del proyecto, limpieza de main.dart, carpetas de lib/ y configuración de assets en pubspec.yaml.
En Flutter todo lo que ves en pantalla es un Widget: un texto, un botón, un espacio, un ícono, incluso la pantalla completa. Un componente no es más que un Widget que tú mismo construyes combinando otros widgets más pequeños, para no repetir el mismo código una y otra vez.
Existen dos tipos principales:
StatelessWidget: se dibuja una vez y no cambia por sí solo. Ejemplo: TopBar.StatefulWidget: puede recordar y cambiar su propia información con el tiempo. Ejemplo: CategorySelector, que recuerda cuál categoría está seleccionada.Por eso el proyecto tiene una carpeta widgets/: TopBar, SearchBarWithFilter, CategorySelector y ProductCard son piezas independientes que luego se ensamblan, como bloques de Lego, dentro de pages/menu.dart. Con esto claro, empezamos a escribir el código.
Ejecuta flutter run (o el botón ▶ de tu editor). Debe abrir el emulador y mostrar la app de ejemplo de Flutter con un contador. Si eso funciona, el proyecto quedó bien creado.
ecommer_app.lib/main.dart y deja solo esta base temporal:Guarda y ejecuta de nuevo (hot restart). Debe verse una pantalla oscura con el texto "Hola Café Místico" centrado.
lib/, crea (clic derecho → New → Directory) estas cuatro carpetas:lib/, no adentro), crea la carpeta de imágenes:Revisa en el árbol de archivos de tu editor que las 4 carpetas dentro de lib/ y la carpeta assets/img/ existan exactamente con esos nombres, en minúscula.
pubspec.yaml y agrega la dependencia http (respeta la indentación con espacios, nunca con tabulaciones):flutter:, declara la carpeta de assets:Coloca cualquier imagen dentro de assets/img/ con el nombre fondo.avif. Reemplaza temporalmente el Text del Center en main.dart por Image.asset('assets/img/fondo.avif') y corre la app. Si la imagen aparece (sin el error rojo "Unable to load asset"), quedó bien configurada. Luego deja el Text de vuelta.