[flutter] 플러터 sticky 헤더를 사용한 일기장 앱 디자인하기

Flutter

안녕하세요! 이번에는 플러터(Flutter)를 사용하여 Sticky 헤더를 가진 일기장 앱을 만들어보려고 합니다. Sticky 헤더는 일기장 앱의 상단에 고정되어 있는 헤더로서, 사용자가 스크롤을 하더라도 항상 보이게 됩니다. 이를 통해 사용자는 언제든지 헤더를 확인하고 필요한 작업을 수행할 수 있습니다.

1. Sticky 헤더 위젯 생성하기

먼저, Sticky 헤더를 위한 위젯을 생성해야 합니다. Flutter에서는 이를 위해 SliverPersistentHeader 위젯을 사용합니다. 이 위젯은 SliverListCustomScrollView 안에 포함되어야 하며, 스크롤되는 본문 내용 위에 고정된 헤더를 제공합니다.

SliverPersistentHeader(
  pinned: true,
  delegate: MyCustomHeaderDelegate(
    minHeight: 60,
    maxHeight: 100,
    child: Container(
      color: Colors.blue,
      alignment: Alignment.center,
      child: Text(
        '일기장',
        style: TextStyle(
          fontSize: 24,
          fontWeight: FontWeight.bold,
          color: Colors.white,
        ),
      ),
    ),
  ),
),

위의 코드에서 MyCustomHeaderDelegateSliverPersistentHeaderDelegate의 서브클래스로서, 실제로 헤더 위젯을 생성하는 역할을 합니다. minHeightmaxHeight는 헤더 위젯의 최소 높이와 최대 높이를 정의하며, child는 헤더 위젯에 표시될 콘텐츠를 정의합니다.

2. Sticky 헤더를 포함한 일기 목록 생성하기

다음으로는 Sticky 헤더를 포함한 일기 목록을 생성해야 합니다. 이를 위해 CustomScrollView 위젯을 사용합니다. 여기에 헤더 위젯과 스크롤 가능한 일기 목록 위젯을 추가하면 됩니다.

CustomScrollView(
  slivers: [
    SliverPersistentHeader(
      pinned: true,
      delegate: MyCustomHeaderDelegate(...),
    ),
    SliverList(
      delegate: SliverChildBuilderDelegate(
        (context, index) {
          return ListTile(
            title: Text('일기 $index'),
          );
        },
        childCount: 20,
      ),
    ),
  ],
),

위의 코드에서 SliverList는 스크롤 가능한 일기 목록을 생성하는데 사용됩니다. SliverChildBuilderDelegate를 사용하여 목록의 각 항목을 동적으로 생성할 수 있습니다. 위 예시에서는 20개의 일기를 생성하도록 지정하였습니다.

3. Sticky 헤더 앱 전체 구성하기

마지막으로, Sticky 헤더를 사용한 일기장 앱의 전체 구성을 완성해야 합니다. 예를 들어 Scaffold 위젯 내부에 CustomScrollView 위젯을 배치하여 필요한 구성을 추가할 수 있습니다.

Scaffold(
  appBar: AppBar(
    title: Text('일기장 앱'),
  ),
  body: CustomScrollView(
    slivers: [
      SliverPersistentHeader(
        pinned: true,
        delegate: MyCustomHeaderDelegate(...),
      ),
      SliverList(...),
    ],
  ),
),

위의 코드에서는 CustomScrollViewScaffoldbody로 설정하였습니다. 또한 AppBar를 추가하여 앱 상단에 타이틀을 표시할 수 있도록 하였습니다.

마무리

위에서는 플러터(Flutter)를 사용하여 Sticky 헤더를 가진 일기장 앱을 디자인하는 방법을 간단히 소개했습니다. Sticky 헤더를 사용하면 스크롤되는 내용 중에서도 사용자가 언제든지 헤더를 확인할 수 있게 됩니다. 이를 활용하여 다양한 형태의 앱을 디자인할 수 있으므로, 많은 사용자들이 편리하게 사용할 수 있는 앱을 개발해보세요.

Happy coding! 😄

참고 자료