Расположить виджеты друг над другом
Часть раздела Адаптивная компоновка путешествия по Flutter на Coddy. Урок 10 из 30.
Column располагает дочерние элементы друг под другом, а Row — рядом друг с другом. Stack располагает их друг на друге, как листы бумаги на столе:
Stack(
children: [
Container(height: 200, color: Colors.grey),
const Text('On top'),
],
)Первый дочерний элемент рисуется первым, внизу. Каждый следующий дочерний элемент рисуется поверх предыдущих. Поэтому фотография идёт первой, а расположенная на ней надпись — последней.
Дочерние элементы начинаются в левом верхнем углу Stack, а сам Stack имеет размер своего самого большого дочернего элемента. Так на изображении размещаются значок, надпись или кнопка воспроизведения.
Задание
ЛегкоЗначок SALE находится под фотографией. Помести его на фотографию: замени Column, содержащий оба элемента, на Stack, чтобы значок отображался поверх.
Попробуйте сами
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)),
],
),
),
),
);
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Адаптивная компоновка
1Совместное размещение в строке
Expanded заполняет строкуДелим пространство с flexFlexible подстраивается под размер дочернего элементаSpacer раздвигает элементы2Ошибка переполнения
Ошибка переполненияИсправление переполнения: расширениеИсправление переполнения: прокруткаИсправление переполнения: переносИнтервалы внутри переноса5Перечисления и switch
Перечисления для типов экрановКонструкция switch с перечислениемВыражения switch3Компоновка виджетов в стопку
Расположить виджеты друг над другомРазмещение в углуВыравнивание внутри блокаSafeArea и вырез экранаПотренируйтесь самостоятельно: Онлайн-компилятор Flutter