본문 바로가기
Flutter

플러터에서 해상도에 따라 위젯 위치 자동 배치하기 [LayoutBuilder / MediaQuery]

by Maccrey Coding 2024. 7. 26.
반응형

 

플러터는 다양한 화면 크기와 해상도를 가진 기기를 지원하는 크로스 플랫폼 모바일 프레임워크입니다.
따라서 앱 개발자는 다양한 화면 크기에 맞춰 위젯을 적절하게 배치해야 합니다.

플러터에서 위젯 위치를 자동으로 배치하는 방법은 여러 가지가 있습니다.

이 블로그에서는 가장 일반적인 두 가지 방법인 LayoutBuilder와 MediaQuery를 사용하는 방법을 살펴보겠습니다.

 

1. LayoutBuilder 사용하기

 

LayoutBuilder 위젯은 자식 위젯의 크기와 위치 정보를 제공하는 위젯입니다.

이 정보를 사용하여 화면 크기에 따라 위젯 위치를 동적으로 조정할 수 있습니다.

 
class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return LayoutBuilder(
      builder: (context, constraints) {
        final screenWidth = constraints.maxWidth;
        final widgetWidth = 200.0; // 위젯 너비
        final leftMargin = (screenWidth - widgetWidth) / 2; // 좌측 여백 계산

        return Container(
          margin: EdgeInsets.only(left: leftMargin),
          child: MyCustomWidget(), // 커스텀 위젯
        );
      },
    );
  }
}
 

위 코드에서 LayoutBuilder 위젯의 builder 함수는 자식 위젯의 크기와 위치 정보를 제공하는 constraints 매개변수를 받습니다.

이 정보를 사용하여 화면 너비 (screenWidth)와 위젯 너비 (widgetWidth)를 기반으로 좌측 여백 (leftMargin)을 계산합니다.

마지막으로 Container 위젯을 사용하여 MyCustomWidget 위젯을 leftMargin 만큼 왼쪽으로 여백을 설정하여 배치합니다.

 

2. MediaQuery 사용하기

 

MediaQuery 위젯은 기기의 화면 크기와 해상도 정보를 제공하는 위젯입니다.

이 정보를 사용하여 화면 크기에 따라 위젯 크기를 조정하거나 위치를 설정할 수 있습니다.

 
class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final screenWidth = MediaQuery.of(context).size.width;
    final widgetWidth = screenWidth * 0.5; // 위젯 너비 (화면 너비의 50%)

    return Container(
      width: widgetWidth, // 위젯 너비 설정
      child: MyCustomWidget(),
    );
  }
}
 

위 코드에서 MediaQuery.of(context).size.width를 사용하여 현재 화면 너비를 가져옵니다.

그리고 위젯 너비 (widgetWidth)를 화면 너비의 50%로 설정합니다.

마지막으로 Container 위젯의 width 속성에 widgetWidth를 설정하여 위젯 너비를 조정합니다.

 

주의 사항

 

위에서 소개된 방법 외에도 다양한 방법으로 해상도에 따라 위젯 위치를 자동으로 배치할 수 있습니다.

개발자는 앱의 디자인과 요구 사항에 따라 가장 적합한 방법을 선택해야 합니다. 또한, 다양한 화면 크기와 해상도를 고려하여 앱을 테스트하는 것이 중요합니다.

 

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

반응형