[flutter] 플러터에서 sticky 헤더를 사용한 사이드바 메뉴 만들기

플러터(Flutter)는 다양한 플랫폼에서 동작하는 모바일 앱 개발을 위한 프레임워크입니다. 이번 포스트에서는 플러터에서 sticky 헤더를 사용하여 사이드바 메뉴를 만드는 방법을 알아보겠습니다.

1. sticky 헤더란?

sticky 헤더는 스크롤 가능한 컨텐츠에서 특정 위치에 고정되어 표시되는 헤더를 말합니다. 스크롤을 내리면 화면 위쪽으로 사라지고, 스크롤을 올리면 다시 화면에 나타납니다. 이러한 동작을 통해 사용자에게 항상 접근 가능한 메뉴나 정보를 제공할 수 있습니다.

2. sticky 헤더 구현하기

플러터에서 sticky 헤더를 구현하기 위해서는 SliverAppBarCustomScrollView를 사용해야 합니다. 아래는 sticky 헤더를 가진 사이드바 메뉴를 구현하는 예제 코드입니다.

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: CustomScrollView(
          slivers: [
            SliverAppBar(
              pinned: true,
              expandedHeight: 200,
              flexibleSpace: FlexibleSpaceBar(
                title: Text('Sticky Header Example'),
              ),
            ),
            SliverList(
              delegate: SliverChildBuilderDelegate(
                (context, index) {
                  return ListTile(
                    title: Text('Menu Item $index'),
                  );
                },
                childCount: 20,
              ),
            ),
          ],
        ),
      ),
    );
  }
}

위 예제 코드에서 SliverAppBar는 sticky 헤더를 구현하기 위한 위젯입니다. 이 위젯의 pinned 속성을 true로 설정하면 스크롤 시 헤더가 고정되어 유지됩니다. expandedHeight 속성은 헤더의 높이를 지정합니다. flexibleSpace 속성은 헤더에 들어갈 컨텐츠를 설정하는데, 여기서는 간단히 텍스트를 표시했습니다.

SliverList는 스크롤 가능한 목록을 구현하기 위한 위젯입니다. SliverChildBuilderDelegate를 사용하여 아이템을 생성하고, childCount로 아이템의 개수를 지정합니다. 이 예제에서는 간단한 메뉴 아이템을 생성하여 표시하였습니다.

3. 마무리

이번 포스트에서는 플러터에서 sticky 헤더를 사용하여 사이드바 메뉴를 만드는 방법을 알아보았습니다. SliverAppBarCustomScrollView를 적절히 사용하여 스크롤 가능한 헤더와 목록을 구현할 수 있습니다. 이를 응용하여 다양한 UI를 개발할 수 있으니 참고해보세요.

더 자세한 내용은 Flutter 공식 문서를 참고하시기 바랍니다.