Apilar widgets uno encima de otro
Parte de la sección Diseños que se adaptan del Journey de Flutter de Coddy. Lección 10 de 30.
Una Column coloca sus elementos secundarios uno debajo del otro, y una Row, uno al lado del otro. Una Stack los coloca unos encima de otros, como hojas de papel sobre un escritorio:
Stack(
children: [
Container(height: 200, color: Colors.grey),
const Text('On top'),
],
)El primer elemento secundario se dibuja primero, en la parte inferior. Cada elemento secundario que le sigue se dibuja encima de los anteriores. Así que la foto va primero y la etiqueta que se coloca sobre ella va al final.
Los elementos secundarios empiezan en la esquina superior izquierda de la Stack, y la Stack tiene el tamaño de su elemento secundario más grande. Así es como una insignia, una etiqueta o un botón de reproducción se coloca sobre una imagen.
Desafío
FácilLa insignia SALE está debajo de la foto. Ponla encima de la foto: cambia la Column que contiene ambas por una Stack, con la insignia dibujada delante.
Pruébalo tú mismo
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(title: const Text('Shop')),
body: Padding(
padding: const EdgeInsets.all(16),
child: Column(
children: [
Column(
children: [
Container(
height: 200,
color: Colors.blueGrey.shade100,
child: const Center(child: Icon(Icons.image, size: 64)),
),
Container(
padding: const EdgeInsets.all(8),
color: Colors.red,
child: const Text('SALE', style: TextStyle(color: Colors.white)),
),
],
),
const SizedBox(height: 12),
const Text('Running shoes', style: TextStyle(fontSize: 20)),
],
),
),
),
);
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Diseños que se adaptan
1Compartir una fila
Expanded ocupa toda la filaCompartir espacio con flexFlexible se ajusta a su hijoSpacer separa los elementos4Tamaños y puntos de ruptura
Ancho completo: double.infinityUn ancho máximoTamaño de pantalla: MediaQueryPuntos de ruptura con LayoutBuilder2El error de desbordamiento
El error de desbordamientoSolución al desbordamiento: expandirSolución al desbordamiento: desplazamientoSolución al desbordamiento: ajustarEspaciado dentro de un ajuste5Enumeraciones y switch
Enumeraciones para tipos de pantallaUsar switch con una enumeraciónExpresiones switch3Apilar widgets
Apilar widgets uno encima de otroPosicionado en una esquinaAlinear dentro de una cajaSafeArea y la muescaPractica por tu cuenta: Compilador de Flutter online