Flutter Scaffold


`Scaffold`는 Flutter에서 화면의 기본적인 구조를 만드는 데 사용되는 위젯입니다. 앱바, 드로어, 플로팅 액션 버튼, 바텀 네비게이션 바 등을 포함하는 다양한 UI 요소를 쉽게 구성할 수 있도록 도와줍니다. `Scaffold`는 Material Design의 주요 레이아웃 구조를 제공합니다.

▶ 주요 속성

– appBar: 화면 상단에 표시되는 앱바를 설정합니다. `AppBar` 위젯을 사용합니다.
– body: 주요 콘텐츠가 위치하는 영역을 설정합니다.
– floatingActionButton: 화면 오른쪽 하단에 떠 있는 액션 버튼을 설정합니다. `FloatingActionButton` 위젯을 사용합니다.
– drawer: 왼쪽에서 슬라이드하여 열 수 있는 네비게이션 드로어를 설정합니다. `Drawer` 위젯을 사용합니다.
– bottomNavigationBar: 화면 하단에 표시되는 네비게이션 바를 설정합니다.
– backgroundColor: `Scaffold`의 배경 색상을 설정합니다.
– bottomSheet: 화면 하단에 표시되는 일종의 팝업을 설정합니다.
– persistentFooterButtons: 항상 화면 하단에 표시되는 버튼들을 설정합니다.

▶ 예제 코드

다양한 `Scaffold` 속성을 사용하여 앱을 구성하는 예제를 보겠습니다.

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Scaffold Example'),
      ),
      body: Center(
        child: Text('Hello, Scaffold!', style: TextStyle(fontSize: 24)),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          // 액션 버튼 클릭 시 수행할 작업
          print('Floating Action Button Clicked');
        },
        child: Icon(Icons.add),
      ),
      drawer: Drawer(
        child: ListView(
          padding: EdgeInsets.zero,
          children: <Widget>[
            DrawerHeader(
              child: Text('Drawer Header'),
              decoration: BoxDecoration(
                color: Colors.blue,
              ),
            ),
            ListTile(
              title: Text('Item 1'),
              onTap: () {
                // 아이템 클릭 시 수행할 작업
                Navigator.pop(context);
              },
            ),
            ListTile(
              title: Text('Item 2'),
              onTap: () {
                // 아이템 클릭 시 수행할 작업
                Navigator.pop(context);
              },
            ),
          ],
        ),
      ),
      bottomNavigationBar: BottomNavigationBar(
        items: [
          BottomNavigationBarItem(
            icon: Icon(Icons.home),
            label: 'Home',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.search),
            label: 'Search',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.person),
            label: 'Profile',
          ),
        ],
      ),
    );
  }
}



▶ 코드 설명

– AppBar 사용:
  – `Scaffold`의 `appBar` 속성에 `AppBar` 위젯을 지정하여 화면 상단에 앱바를 추가합니다.
  – `title` 속성에 텍스트를 지정하여 앱바의 제목을 설정합니다.

– Body 사용:
  – `Scaffold`의 `body` 속성에 `Center` 위젯을 지정하여 중앙에 텍스트를 표시합니다.
  – `Text` 위젯을 사용하여 ‘Hello, Scaffold!’라는 텍스트를 표시합니다.

– FloatingActionButton 사용:
  – `Scaffold`의 `floatingActionButton` 속성에 `FloatingActionButton` 위젯을 지정하여 화면 오른쪽 하단에 떠 있는 액션 버튼을 추가합니다.
  – `onPressed` 콜백을 지정하여 버튼 클릭 시 콘솔에 메시지를 출력합니다.

– Drawer 사용:
  – `Scaffold`의 `drawer` 속성에 `Drawer` 위젯을 지정하여 왼쪽에서 슬라이드하여 열 수 있는 네비게이션 드로어를 추가합니다.
  – `DrawerHeader`와 `ListTile` 위젯을 사용하여 드로어의 헤더와 항목을 구성합니다.
  – `onTap` 콜백을 지정하여 항목 클릭 시 드로어를 닫습니다.

– BottomNavigationBar 사용:
  – `Scaffold`의 `bottomNavigationBar` 속성에 `BottomNavigationBar` 위젯을 지정하여 화면 하단에 네비게이션 바를 추가합니다.
  – `BottomNavigationBarItem`을 사용하여 네비게이션 바의 항목을 구성합니다.

이 예제는 `Scaffold` 위젯의 다양한 속성을 사용하여 앱의 기본 구조를 만드는 방법을 보여줍니다. `Scaffold`는 복잡한 레이아웃을 쉽게 구성할 수 있도록 도와주는 중요한 위젯입니다.


Leave a Reply

Your email address will not be published. Required fields are marked *