Flutter AppBar


`AppBar`는 Flutter에서 화면 상단에 표시되는 제목 바를 제공하는 위젯입니다. `AppBar`는 기본적인 타이틀, 로고, 액션 아이콘 등을 포함할 수 있으며, 복잡한 레이아웃도 지원합니다. 주로 `Scaffold` 위젯의 `appBar` 속성에 사용됩니다.

주요 속성

– title: 앱바의 제목을 설정합니다. 보통 `Text` 위젯을 사용합니다.
– leading: 앱바의 왼쪽에 표시되는 위젯을 설정합니다. 보통 메뉴 버튼이나 뒤로 가기 버튼으로 사용됩니다.
– actions: 앱바의 오른쪽에 표시되는 위젯 목록을 설정합니다. 보통 아이콘 버튼들이 사용됩니다.
– backgroundColor: 앱바의 배경 색상을 설정합니다.
– elevation: 앱바의 그림자 깊이를 설정합니다.
– bottom: 앱바의 하단에 추가적인 위젯을 배치합니다. 보통 `TabBar`와 함께 사용됩니다.
– centerTitle: 제목을 중앙에 배치할지 여부를 설정합니다. (iOS 스타일)
– flexibleSpace: 앱바 뒤에 배치할 위젯을 설정합니다. 스크롤 효과 등을 줄 때 사용합니다.

기본 사용 예제

간단한 `AppBar`를 사용하여 기본적인 앱바를 구성하는 예제를 보겠습니다.

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter AppBar Example'),
          backgroundColor: Colors.blue,
          elevation: 4.0,
          centerTitle: true,
          actions: <Widget>[
            IconButton(
              icon: Icon(Icons.search),
              onPressed: () {
                // 검색 아이콘 클릭 시 수행할 작업
                print('Search icon clicked');
              },
            ),
            IconButton(
              icon: Icon(Icons.more_vert),
              onPressed: () {
                // 더보기 아이콘 클릭 시 수행할 작업
                print('More icon clicked');
              },
            ),
          ],
        ),
        body: Center(
          child: Text('Hello, AppBar!'),
        ),
      ),
    );
  }
}

코드 설명
– title 사용:
  – `AppBar`의 `title` 속성에 `Text` 위젯을 지정하여 앱바의 제목을 설정합니다.

– backgroundColor 사용:
  – `AppBar`의 `backgroundColor` 속성에 색상을 지정하여 배경 색상을 설정합니다.

– elevation 사용:
  – `AppBar`의 `elevation` 속성에 값을 지정하여 그림자 깊이를 설정합니다.

– centerTitle 사용:
  – `AppBar`의 `centerTitle` 속성에 `true`를 설정하여 제목을 중앙에 배치합니다.

– actions 사용:
  – `AppBar`의 `actions` 속성에 `IconButton` 위젯 목록을 지정하여 오른쪽에 아이콘 버튼을 추가합니다.
  – 각 `IconButton`에 `onPressed` 콜백을 지정하여 아이콘 버튼 클릭 시 수행할 작업을 설정합니다.

고급 사용 예제

`AppBar`의 다양한 속성을 사용하여 복잡한 레이아웃을 구성하는 예제를 보겠습니다.

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 AppBar Example'),
        leading: IconButton(
          icon: Icon(Icons.menu),
          onPressed: () {
            // 메뉴 아이콘 클릭 시 수행할 작업
            print('Menu icon clicked');
          },
        ),
        actions: <Widget>[
          IconButton(
            icon: Icon(Icons.search),
            onPressed: () {
              // 검색 아이콘 클릭 시 수행할 작업
              print('Search icon clicked');
            },
          ),
          IconButton(
            icon: Icon(Icons.more_vert),
            onPressed: () {
              // 더보기 아이콘 클릭 시 수행할 작업
              print('More icon clicked');
            },
          ),
        ],
        flexibleSpace: Container(
          decoration: BoxDecoration(
            gradient: LinearGradient(
              colors: [Colors.blue, Colors.purple],
              begin: Alignment.topLeft,
              end: Alignment.bottomRight,
            ),
          ),
        ),
        bottom: TabBar(
          tabs: [
            Tab(icon: Icon(Icons.home)),
            Tab(icon: Icon(Icons.star)),
            Tab(icon: Icon(Icons.person)),
          ],
        ),
      ),
      body: Center(
        child: Text('Hello, AppBar!'),
      ),
    );
  }
}

코드 설명
– leading 사용:
  – `AppBar`의 `leading` 속성에 `IconButton`을 지정하여 왼쪽에 메뉴 아이콘을 추가합니다.
  – `onPressed` 콜백을 지정하여 메뉴 아이콘 클릭 시 수행할 작업을 설정합니다.

– flexibleSpace 사용:
  – `AppBar`의 `flexibleSpace` 속성에 `Container`를 지정하여 앱바 뒤에 그라데이션 배경을 추가합니다.
  – `BoxDecoration`과 `LinearGradient`를 사용하여 그라데이션을 설정합니다.

– bottom 사용:
  – `AppBar`의 `bottom` 속성에 `TabBar`를 지정하여 앱바 하단에 탭바를 추가합니다.
  – `TabBar`의 `tabs` 속성에 탭 항목들을 지정합니다.

이 예제는 `AppBar` 위젯의 다양한 속성을 사용하여 복잡한 레이아웃을 구성하는 방법을 보여줍니다. `AppBar`는 Flutter에서 매우 유용한 위젯으로, 앱의 상단바를 손쉽게 구성할 수 있도록 도와줍니다.


Leave a Reply

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