Виджет Spacer в Flutter
Виджет
Spacer
- пустой гибкий элемент в Row
или Column.
Он забирает свободное место вдоль главной оси
и тем самым отталкивает соседей друг от друга.
По сути это Expanded
с пустым потомком.
Параметр flex задаёт, какую долю
свободного пространства займёт прокладка.
Два Spacer с flex: 1 делят
остаток поровну между собой; один Spacer
между двумя кнопками прижмёт их к противоположным
краям ряда:
import 'package:flutter/material.dart';
void main() {
runApp(const MaterialApp(home: HomePage()));
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.all(16),
child: Row(
children: [
const Text('Left'),
const Spacer(),
const Text('Right'),
],
),
),
);
}
}
Виджет Spacer работает только когда у
ряда
или колонки есть лишнее место по главной оси -
например, Row на всю ширину body.
Для фиксированного зазора фиксированной ширины
чаще берут SizedBox:
Row(
children: [
const Icon(Icons.arrow_back),
const Spacer(flex: 2),
const Text('Title'),
const Spacer(flex: 1),
const Icon(Icons.more_vert),
],
)
В body соберите Row с
crossAxisAlignment:
CrossAxisAlignment.start: слева
Text 'Back', справа
'Next', между ними Spacer.
Оберните ряд в Padding с отступом
16, как в примере. Подписи у верхних
углов экрана.