Dart - LayoutBuilder

박정규·2022년 1월 26일
1

LayoutBuilder란?

빌드 방식을 사용하면서 Widget의 크기를 확인하고 지정하고 싶을 때 우리는 LayoutBuilder을 사용하여 Widget의 크기를 지정하여 준다.

어떻게 생성할까?

예시 코드

import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  static const String _title = 'Flutter Code Sample';

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: _title,
      home: MyStatelessWidget(),
    );
  }
}

class MyStatelessWidget extends StatelessWidget {
  const MyStatelessWidget({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('LayoutBuilder Example')),
      body: LayoutBuilder(
        builder: (BuildContext context, BoxConstraints constraints) {
          if (constraints.maxWidth > 600) {
            return _buildWideContainers();
          } else {
            return _buildNormalContainer();
          }
        },
      ),
    );
  }

  Widget _buildNormalContainer() { 
    return Center(
      child: Container(
        height: 100.0,
        width: 100.0,
        color: Colors.red, //constraints.maxWidth >600 일 때
      ),
    );
  }

  Widget _buildWideContainers() {
    return Center(
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: <Widget>[
          Container(
            height: 100.0,
            width: 100.0,
            color: Colors.red,
          ),
          Container(
            height: 100.0,
            width: 100.0,
            color: Colors.yellow, constraints.maxWidth < 600 일 때
          ),
        ],
      ),
    );
  }
}

저는 layoutBuild를 TextField와 같은 기능을 통해 값을 입력 받을 떄 입력 받은 내용의 크기에 따라 Widget의 크기를 정하는데 사용할 거 같습니다.

profile
초보 개발자

0개의 댓글