🧩Stack
Что такое Stack
StackStack — это виджет в Flutter, который позволяет располагать другие виджеты один над другим, накладывая их друг на друга. Подумайте о Stack как о слоеном торте, где каждый слой (или виджет) находится над предыдущим. Это позволяет создавать интересные эффекты и компоновки, когда элементы перекрываются.
Пример использования
В этом примере мы создадим интерфейс с изображением и текстом, который будет наложен на изображение.

import 'package:flutter/material.dart';
class StackExample extends StatelessWidget {
const StackExample({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Stack Example')),
body: Stack(
alignment: Alignment.center, // Выравнивание элементов в стеке
children: [
Container(
width: 300,
height: 200,
color: Colors.blue, // Фон контейнера
),
const Text(
'Hello, Stack!',
style: TextStyle(
fontSize: 24,
color: Colors.white,
),
),
Align(
alignment: Alignment.bottomRight,
child: Container(
width: 100,
height: 100,
color: Colors.green, // Фон контейнера
),
),
],
),
);
}
}Как работает код
Scaffold — это основа для нашего интерфейса, как холст для художника.
AppBar — верхняя панель, где написано название приложения.
Stack — используется для наложения виджетов один на другой.
Container — создает синий прямоугольник, который будет фоном для текста.
Text — накладывает текст на контейнер, который расположен в центре стека.
Все настройки Stack
children
Описание: Список дочерних виджетов, которые будут накладываться друг на друга.
Пример:
children: [ Container(...), // Первый слой Text(...), // Второй слой ]Применение: Позволяет указать, какие элементы будут находиться в стеке и в каком порядке (первый добавленный будет внизу, последний — вверху).
alignment
Описание: Определяет, как будут выровнены дочерние элементы внутри стека.
Пример:
alignment: Alignment.center // Элементы будут выровнены по центру стекаПрименение: Полезно для управления расположением элементов внутри
Stack, особенно если они меньше самогоStack.
fit
Описание: Определяет, как будут занимать пространство дочерние элементы. Может быть
StackFit.loose,StackFit.expand, и т.д.Пример:
fit: StackFit.expand // Все дочерние элементы займут все доступное пространствоПрименение: Используется для контроля того, как элементы будут растягиваться или уменьшаться в зависимости от размера стека.
Итог
Stack — это мощный инструмент для создания сложных и интересных интерфейсов, когда вам нужно наложить элементы друг на друга. Если вы хотите создать эффекты перекрытия или нуждаетесь в свободном размещении виджетов, Stack поможет вам в этом.
Last updated