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

Ограничения родителя в Flutter

Каждый виджет при раскладке получает от родителя BoxConstraints: минимальную и максимальную ширину и высоту. Потомок решает, какой размер взять внутри этой рамки. Текст без явной ширины сжимается по содержимому; растянутый Row заставляет потомков учитывать ширину экрана.

Виджет Scaffold отдаёт body максимум по ширине и высоте. Виджет Row внутри body растягивается на всю ширину: у него максимальная ширина равна ширине экрана. Обычный Text в таком ряду не растягивается сам - он занимает только ширину строки:

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: Row( children: const [ Text('Short'), Text('A very long label in the row'), ], ), ); } }

Если сумма «естественных» ширин потомков больше доступной, ряд не сожмёт текст бесконечно - возникнет переполнение. Чтобы потомок получил долю ширины, его оборачивают в Expanded или задают SizedBox с width:

Row( children: const [ Text('Label'), Expanded( child: Text('Text uses the remaining row width'), ), ], )

В body разместите Row на всю ширину: первый Text 'Name', второй - Expanded с фразой 'A very long value that must stay inside the right edge'. Строка переносится внутри своей доли и не выходит за правый край экрана.

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