Flutter는 훌륭한 모바일 앱 개발 프레임워크로서, 다양한 사용자 인터페이스 요구에 맞게 커스터마이즈할 수 있는 기능을 제공합니다. 이 중에서도 스크롤 시 Sticky 헤더를 만들어 사용자가 앱 내에서 항상 헤더를 볼 수 있도록 만드는 방법을 알아보겠습니다.
1. SliverAppBar 사용하기
SliverAppBar
위젯을 사용하여 스크롤 시 Sticky 헤더를 만들 수 있습니다. SliverAppBar
는 스크롤되는 내용으로부터 별도로 격리된 헤더 영역을 만들어줍니다.
CustomScrollView(
slivers: <Widget>[
SliverAppBar(
pinned: true, // 스크롤 시 헤더 고정
title: Text('Sticky Header'), // 헤더 타이틀
// 추가적인 스타일링 및 설정
// ...
),
// 스크롤 가능한 콘텐츠 위젯 추가
// ...
],
);
위의 코드에서 CustomScrollView
는 스크롤이 가능한 콘텐츠를 감싸는 부모 위젯입니다. SliverAppBar
은 스크롤과 독립적으로 동작하는 헤더를 생성합니다. pinned
속성은 헤더를 스크롤 할 때 항상 화면 상단에 고정하도록 설정하는 역할을 합니다.
2. 보조 스크롤러 구현하기
SliverAppBar
을 사용하면 해당 헤더만 화면 상단에 고정되고 스크롤되는 내용은 그 아래에 표시됩니다. 하지만 다른 요소들과 함께 스크롤되는 헤더를 만들기 위해서는 SliverList
또는 SliverGrid
와 같은 슬리버 위젯과 함께 사용해야 합니다.
CustomScrollView(
slivers: <Widget>[
SliverAppBar(
pinned: true,
title: Text('Sticky Header'),
// 추가적인 스타일링 및 설정
// ...
),
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return ListTile(
title: Text('List Item $index'),
);
},
childCount: 100, // 리스트 아이템 개수
),
),
],
);
위의 코드에서 SliverList
는 스크롤 가능한 목록을 만들어줍니다. delegate
속성은 빌더 메서드를 이용하여 각 목록 아이템을 생성합니다. 위의 예시에서는 간단하게 ListTile
위젯을 사용하여 각 아이템을 표시했습니다.
3. 그 외의 커스터마이즈
SliverAppBar
위젯을 사용하여 Sticky 헤더를 만드는 것 외에도 다양한 커스터마이즈 옵션을 사용할 수 있습니다. 예를 들어, 헤더의 배경색을 변경하거나, 텍스트 스타일을 조정하는 등의 작업을 할 수 있습니다. 자세한 내용은 공식 문서를 참조하시기 바랍니다.
결론
위의 방법을 사용하여 Flutter 앱에서 스크롤 시 Sticky 헤더를 구현할 수 있습니다. SliverAppBar
와 다른 슬리버 위젯을 함께 사용하면 헤더와 내용이 같이 스크롤되는 아름다운 사용자 인터페이스를 만들 수 있습니다.