Santiago Espinel
Este curso va a la velocidad de la luz
Jess Key
Estoy de acuerdo lanzo el container con todos los juguetes jajaaja
Sergio Olivo Orellana
Sii, No se que pasa pero ahí vamos..
Construir el cuerpo de una aplicación en Flutter requiere dominar widgets fundamentales como container, row, column y text. Estos elementos te permiten estructurar tarjetas, organizar contenido en filas y columnas, y aplicar estilos visuales que dan personalidad a cada pantalla. Aquí aprenderás a usarlos para diseñar una card de receta paso a paso.
Cómo organizar la jerarquía de widgets en Flutter
Antes de añadir el body, conviene formatear el código para visualizar la herencia entre widgets. Selecciona todo el código, ve a format y elige Dart como lenguaje [0:25]. El resultado se ve en cascada: cada widget queda anidado debajo de otro, lo que facilita entender la relación padre-hijo.
Esta estructura jerárquica es clave en Flutter. Cada widget tiene un child o children que define qué contiene, y los estilos se propagan según esa jerarquía.
Qué es un Container y por qué es la widget base de tu layout
Un container funciona como una caja invisible que puede contener cualquier widget y aplicar estilos del box model: padding, margin, border, color y tamaño. Es la pieza que más vas a usar para envolver y estilizar contenido.
¿Qué es un Container en Flutter? Es una widget tipo caja invisible que envuelve otros widgets y permite aplicar padding, margin, border, color y tamaño desde un solo lugar.
Para crear la card de receta, dentro del body se coloca un container con un child tipo card, que ya trae un delineado y borde por defecto que puedes personalizar [1:30].
Cómo dividir una card en secciones con Row
La idea es dividir la card en dos secciones: una con la imagen y otra con la información del creador y el nombre de la receta. Para colocar widgets en horizontal se usa row, y para apilarlos en vertical se usa column.
Cuando agregas múltiples widgets dentro de un row, no usas child sino children, y le indicas que recibirá una lista de widgets con la sintaxis <Widget>[].
Cómo definir tamaños con height y width en un Container
Dentro del row, el primer elemento es un container que reservará el espacio para la imagen. Las propiedades clave son:
Los valores numéricos en Flutter se interpretan como píxeles lógicos, lo que mantiene proporciones consistentes entre dispositivos.
Cómo aplicar bordes redondeados con ClipRRect y BorderRadius
Para que la imagen tenga esquinas suaves se usa ClipRRect (con doble R) [3:55]. Esta widget recorta su contenido siguiendo un borderRadius. Se configura así:
borderRadius: BorderRadius.circular(10) para definir el redondeo.¿Para qué sirve ClipRRect en Flutter? Recorta un widget hijo aplicando bordes redondeados definidos por BorderRadius.circular, ideal para imágenes con esquinas suaves.
Cómo agregar espaciado con SizeBox según la dirección
El widget SizedBox funciona como un espaciador entre elementos. Lo interesante es que su comportamiento depende del contenedor padre:
Esta lógica refleja cómo Flutter alinea sus ejes principales según la widget contenedora.
Cómo apilar textos con Column y Text
Para la segunda sección de la card, se usa un column con children que contiene varias widgets de tipo Text. En el ejemplo se agregan dos textos: el nombre de la receta ("lasaña") y el autor ("Alison Menes") [5:50].
Después se añade un container decorativo que actúa como línea separadora, con un height pequeño, un width amplio y un color tomado de la paleta Colors.orange.
Cómo hacer una card responsive con MediaQuery
Para que la tarjeta se adapte al ancho de pantalla, se usa MediaQuery, una propiedad muy usada en desarrollo responsive. La sintaxis es MediaQuery.of(context).size.width [7:30].
El context aquí no es casualidad: es el mismo context que aparece en la parte superior del método build y representa la ubicación heredada de cada widget en el árbol.
¿Qué hace MediaQuery.of(context).size en Flutter? Devuelve el tamaño completo de la pantalla del dispositivo, permitiendo que widgets como Container ajusten su width o height de forma responsive.
Con esta configuración, el width toma el ancho total de la pantalla automáticamente, mientras que el height se mantiene fijo en 125 para conservar la proporción de la card.
¿Qué otra widget te gustaría explorar para enriquecer tu card de recetas? Cuéntalo en los comentarios y comparte tu avance.
Santiago Espinel
Este curso va a la velocidad de la luz
Jess Key
Estoy de acuerdo lanzo el container con todos los juguetes jajaaja
Sergio Olivo Orellana
Sii, No se que pasa pero ahí vamos..
Jonathan Vera Segura
ya que l aprofesora no muestra nada visual. aca les dejo un aporte !Flutter Layout Basics: Rows, Columns, and Containers
Julieta Melek Fernanda Eyzaguirre Arenas
muchas gracias
Alex Naupay
Podrían poner el diseño UI?
Santiago Andres Gelvez Camargo
A modo de tip, en los container pueden colocar una propiedad color y jugar con los tamaños para entender a fondo qué hace cada widget.
No entendía muy bien cada cosa del Row pero jugando un poco, me va quedando mas claro.
Juan Guillermo Perez Cardozo
es muy facil de entender , lo unico que hasta ahora veo como raro es que el anidamiento de los widgets parece el callback hell de js , peero pues esto es otro lenguaje
Armando Martínez
Me parece que los siguientes pasos serían separar o encapsular los widgets en clases en otro archivo, importarlos y de esa manera podemos tener una mejor organización.
Gregson Murcia Castro
En esta clase casi no pude ver lo que escribe la profesora, seria bueno saber el porque del porque, mas que solo codear porque si
Yamid Horacio Rodríguez
¡Que emoción avanzar y ver los resultados de este curso!, Thanksss
Iván Ignacio Alvarado Diaz
Cuando escribes BorderRadius.circular(10), ¿El 10 que representa? ¿son pixeles, dp, em? ¿como es que se miden los tamaños de margenes, paddings, width, height?
Alison Jimenez
ProfesorSon pixeles Ivan
Dave Juanes
Genial gracias Alison! espere años por la escula de flutter
Jonathan Vera Segura
una representación visual, como un gráfico o diseño UI, que muestre cómo se ve cada elemento en la vista móvil. De esta manera, todos podríamos aprender de manera más intuitiva y visual,
gabriel morffes
Para lograr entender la clase es necesario tener bases fuertes de desarrollo en otros lenguajes aunque claro cambian ciertas cosas pero llegan a tener cierta similitud
Luis Jaramillo
Pasa que la profesora no explica ningun concepto inherentes a la interfaces graficas.
No explica nada en general.
Julieta Melek Fernanda Eyzaguirre Arenas
realmente flutter se puede hacer muchas cosas, mi duda es solo en main se agrega todo, o debo ppor ejemplo por cada receta o pagina generar un codigo dart
José Galvis
Hola JUlieta:
Flutter permite hacer muchas cosas, pero no se pone todo en main.dart.
main solo inicia la app.
El código se separa por pantallas y responsabilidades, en diferentes package, aplicando modularidad (SOLID) para facilitar mantenimiento y escalabilidad.
Saludos!
Oscar Giraldo Castillo
Diego Andrés Lopez Rodriguez
Daniel Condía Figueredo
Es una combinación algo extraña pero me ayudo a visualizar mentalmente y entender como va funcionando el codigo.
-> Cada widget es como una etiqueta de HTML. Puede contener otra etiquetas internas y cada etiqueta tiene su propia responsabilidad.
Ej: HTML => <div></div> equivale a Flutter => Container.
HTML => <span> equivale a Flutter => Text
-> El retorno de los Widget embebidos tiene una gran cantidad de diseño, esto se puede comparar como los componentes de Angular, cada componente puede ser reutilizado y usado en otro componente que a su vez tiene más componentes embebidos, asi como Widgets dentro de más Widgets
-> Todo lo anterior más la sintaxis muy parecida a la de java y siguiendo la programación orientada a objetos siguiendo los 4 pilares de OOP me ayudo a entender como se va componiendo Flutter
Julian Mauricio Perez Mora
No tienes que borrar todo. La clase explica cómo ir añadiendo nuevos widgets como Container, Row, Column y Text al código existente para construir el cuerpo de la app, manteniendo lo que ya tenías de la AppBar.
Juddy Tatiana Vargas Santofimio
Es normal que algunos componenetes aparezcan subrayados en azul, ¿esto que quiere decir?
Jess Key
Que curso va antes del basico 😂?
ignacio romero
y mas basico que esto, seria algun curso de introducion a la programacion
Quizás ayude agregar colores:
import 'package:flutter/material.dart'; void main() => runApp(const MyApp()); class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return const MaterialApp( title: 'Hola mundo', home: RecipeBook(), debugShowCheckedModeBanner: false, ); } } class RecipeBook extends StatelessWidget { const RecipeBook({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Colors.orange, title: const Text('Recipe Book', style: TextStyle(color: Colors.white)), leading: IconButton(icon: const Icon(Icons.add), onPressed: () {}), ), body: Container( color: const Color.fromARGB(255, 178, 15, 15), width: MediaQuery.of(context).size.width, height: 125, child: Card( child: Row( children: <Widget>[ Container( height: 125, width: 100, color: const Color.fromARGB(255, 46, 27, 216), child: ClipRRect( borderRadius: BorderRadius.circular(10), child: Container( color: const Color.fromARGB(255, 236, 244, 20), ), ), ), Container( width: 26, color: const Color.fromARGB(255, 13, 162, 70), ), Column( children: <Widget>[ Text('Lasagna'), Text('Oscar Giraldo'), Container(height: 2, width: 75, color: Colors.orange), ], ), ], ), ), ), ); } }