LayoutBuilder
— это виджет Flutter, который позволяет получать информацию о размере и расположении своего родительского виджета и на основе этой информации строить свой собственный виджет.
Вот пример использования LayoutBuilder
:
class MyWidget extends StatelessWidget { const MyWidget({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('LayoutBuilder Example'), ), body: Center( child: LayoutBuilder( builder: (BuildContext context, BoxConstraints constraints) { return Container( width: constraints.maxWidth, height: constraints.maxHeight, color: Colors.blue, child: Center( child: Text( 'Width: ${constraints.maxWidth}, Height: ${constraints.maxHeight}', style: const TextStyle(fontSize: 24, color: Colors.white), ), ), ); }, ), ), ); } }
В этом примере мы создаем виджет MyWidget
, который содержит LayoutBuilder
в качестве дочернего виджета. В методе builder
мы используем параметры BuildContext
и BoxConstraints
, которые предоставляются LayoutBuilder
, чтобы создать Container
, который занимает максимально возможное пространство в своем родительском виджете. Затем мы отображаем текстовое сообщение, которое отображает ширину и высоту Container
.
Когда LayoutBuilder
строит свой виджет, он предоставляет информацию о размере и расположении своего родительского виджета в объекте BoxConstraints
. Затем мы используем эту информацию, чтобы установить размер Container
. В нашем случае мы устанавливаем ширину и высоту Container
равными максимально возможным значениям, которые мы получаем из BoxConstraints
.
Таким образом, LayoutBuilder
позволяет нам создавать адаптивный макет, который может изменять свой вид, в зависимости от размеров и расположения своего родительского виджета.