🧩Flexible
Что такое Flexible
Flexible
Flexible
— это виджет в Flutter, который позволяет дочерним элементам занимать пространство внутри родительского контейнера, но с большей гибкостью по сравнению с Expanded
. Представьте, что вы в комнате с несколькими людьми, и у каждого есть свои предпочтения по пространству: кто-то хочет больше места, а кто-то меньше. Flexible
позволяет каждому занимать столько места, сколько ему нужно, в зависимости от настроек.
Пример использования
В этом примере мы создадим интерфейс с несколькими цветными блоками, где каждый блок будет занимать различное количество пространства.

import 'package:flutter/material.dart';
class FlexibleExample extends StatelessWidget {
const FlexibleExample({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Flexible Example')),
body: Column(
children: [
Flexible(
flex: 2, // Этот блок займет 2 части пространства
child: Container(
color: Colors.red,
),
),
Flexible(
flex: 1, // Этот блок займет 1 часть пространства
child: Container(
color: Colors.green,
),
),
Flexible(
flex: 3, // Этот блок займет 3 части пространства
child: Container(
color: Colors.blue,
),
),
],
),
);
}
}
Как работает код
Scaffold — это основа для нашего интерфейса, как пустой холст.
AppBar — верхняя панель, где написано название приложения.
Column — используется для размещения виджетов вертикально, один под другим.
Flexible — оборачивает каждый контейнер и позволяет ему занимать определённую часть пространства в зависимости от заданного
flex
.Container — каждый контейнер окрашен в свой цвет (красный, зелёный, синий) и занимает разное пространство согласно значениям
flex
.
Все настройки Flexible
child
Описание: Это дочерний виджет, который будет занимать пространство в зависимости от настроек.
Пример:
child: Container(color: Colors.red) // Контейнер, который будет гибко занимать пространство
Применение: Указывает, какой элемент будет растягиваться в зависимости от доступного пространства.
flex
Описание: Определяет, какую долю пространства должен занимать этот виджет относительно других виджетов с
Flexible
. По умолчанию значение равно 1.Пример:
flex: 2 // Этот виджет займет в два раза больше пространства по сравнению с другими
Применение: Позволяет вам настроить, как будет делиться пространство между несколькими
Flexible
.
Итог
Flexible
— это полезный виджет, который помогает вашим элементам занимать пространство в родительском контейнере более гибко. Если вам нужно, чтобы виджеты занимали разное количество места в зависимости от своих нужд, используйте Flexible
, и он даст вашим элементам свободу в размещении.
Last updated