Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗flPmLyMS 27 of 125 menu
◀ ▶

MainAxisSize у Row и Column в Flutter

Параметр mainAxisSize у Row и Column говорит, насколько виджет растягивается вдоль главной оси. Значение MainAxisSize.max по умолчанию: ряд или колонка занимают всё место, которое отдал родитель.

Режим MainAxisSize.min сжимает раскладку до размера потомков. Ряд не тянется на всю ширину body - он ровно по сумме элементов. Это нужно для компактных панелей внутри Center, чипов в центре экрана или когда mainAxisAlignment не должен раздвигать соседей по пустому пространству:

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: Center( child: Row( mainAxisSize: MainAxisSize.min, children: const [ Icon(Icons.home), Text('Home'), ], ), ), ); } }

Сравните: тот же Row без min в широком body займёт всю ширину, и MainAxisAlignment.spaceBetween начнёт работать между краями экрана. С min ряд остаётся узким, а Center кладёт его посередине:

Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: const [ Text('Edge'), Text('Edge'), ], )

По центру экрана выведите Row с mainAxisSize: MainAxisSize.min, иконкой Icons.info и Text 'Help'. Блок не должен растягиваться на всю ширину - только по содержимому.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить