Empilhe Widgets
Parte da seção Layouts que se adaptam do Journey de Flutter da Coddy. Lição 10 de 30.
Uma Column coloca seus filhos um abaixo do outro, e uma Row, lado a lado. Uma Stack os coloca uns sobre os outros, como folhas de papel sobre uma mesa:
Stack(
children: [
Container(height: 200, color: Colors.grey),
const Text('On top'),
],
)O primeiro filho é desenhado primeiro, na parte de baixo. Cada filho seguinte é desenhado sobre os anteriores. Assim, a foto vem primeiro, e o rótulo que fica sobre ela vem por último.
Os filhos começam no canto superior esquerdo da Stack, e a Stack tem o tamanho do seu maior filho. É assim que um selo, um rótulo ou um botão de reprodução fica sobre uma imagem.
Desafio
FácilO selo SALE fica embaixo da foto. Coloque-o sobre a foto: altere a Column que contém os dois para uma Stack, com o selo desenhado à frente.
Experimente você mesmo
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 lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Layouts que se adaptam
1Compartilhando uma linha
Expanded preenche a linhaCompartilhando espaço com flexFlexible se ajusta ao filhoSpacer separa os elementos4Tamanhos e pontos de quebra
Largura total: double.infinityUma largura máximaTamanho da tela: MediaQueryPontos de quebra com LayoutBuilder3Empilhando Widgets
Empilhe WidgetsPosicionado em um CantoAlinhe Dentro de uma CaixaSafeArea e o NotchPratique por conta própria: Compilador de Flutter online