SliverAppBar
는 스크롤 가능한 앱 바를 제공합니다. 주로 CustomScrollView
와 함께 사용되며, 사용자에게 뛰어난 시각적 경험을 제공합니다.
title
: 앱 바의 제목을 설정합니다. 일반적으로 Text
위젯을 사용합니다.
actions
: 앱 바의 오른쪽에 위치할 위젯들의 리스트를 설정합니다. 주로 IconButton
등을 포함합니다.
leading
: 앱 바의 왼쪽에 위치할 위젯을 설정합니다. 일반적으로 뒤로 가기 버튼이나 메뉴 버튼을 포함합니다.
expandedHeight
: 앱 바가 확장될 때의 최대 높이를 설정합니다.
flexibleSpace
: 앱 바의 확장 가능한 영역을 설정합니다. 일반적으로 이미지나 다른 콘텐츠를 포함할 수 있는 FlexibleSpaceBar
위젯을 사용합니다.
floating
: true
로 설정하면 스크롤 시 앱 바가 화면에 나타나고, 스크롤을 멈추면 사라집니다.
pinned
: true
로 설정하면 앱 바가 스크롤 시 상단에 고정됩니다.
snap
: floating
이 true
일 때만 사용 가능하며, 스크롤을 멈출 때 앱 바가 자동으로 펼쳐집니다.
SliverAppBar
는 다양한 속성을 통해 스크롤 동작을 제어할 수 있습니다. 이 속성들은 앱 바가 스크롤에 반응하는 방식을 결정합니다. 다음은 floating
, pinned
, snap
속성에 대한 자세한 설명입니다.
floating
속성을 true
로 설정하면 스크롤 시 앱 바가 화면에 나타납니다. 사용자가 스크롤을 내리면 앱 바가 바로 나타나고, 스크롤을 올리면 사라집니다.pinned
속성을 true
로 설정하면 앱 바가 스크롤 시 상단에 고정됩니다. 스크롤이 내려가도 앱 바가 항상 상단에 고정되어 보입니다.snap
속성은 floating
이 true
일 때만 사용 가능하며, 스크롤을 멈출 때 앱 바가 자동으로 펼쳐집니다. 사용자가 스크롤을 멈출 때 앱 바가 완전히 펼쳐지거나 숨겨집니다.스크롤 가능한 앱 바: 사용자에게 더 나은 UI/UX 경험을 제공하기 위해 앱 바가 스크롤에 따라 동적으로 변합니다.
이미지 및 콘텐츠 통합: 확장 가능한 영역을 통해 이미지나 다른 콘텐츠를 앱 바에 통합할 수 있습니다.
고정된 앱 바: 스크롤 시 앱 바가 항상 상단에 고정되도록 설정할 수 있습니다.
아래 예제는 SliverAppBar
를 사용하여 확장 가능한 앱 바를 설정하는 방법을 보여줍니다.
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: CustomScrollView(
slivers: <Widget>[
SliverAppBar(
title: Text('SliverAppBar Example'),
expandedHeight: 200.0,
flexibleSpace: FlexibleSpaceBar(
background: Image.network(
'https://example.com/image.jpg',
fit: BoxFit.cover,
),
),
floating: false,
pinned: true,
snap: false,
),
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return ListTile(
title: Text('Item #$index'),
);
},
childCount: 100,
),
),
],
),
),
);
}
}
적절한 높이 설정: expandedHeight
속성을 사용하여 앱 바가 확장될 때 적절한 높이를 설정합니다.
유연한 공간 활용: flexibleSpace
속성을 사용하여 앱 바의 확장 가능한 영역에 이미지나 다른 콘텐츠를 추가합니다.
스크롤 동작 설정: floating
, pinned
, snap
속성을 조정하여 앱 바의 스크롤 동작을 설정합니다.
스택 구조: flexibleSpace
위젯을 지정하면 툴바와 bottom
위젯 뒤에 배치되어 유연한 공간을 활용할 수 있습니다.
SliverAppBar
를 스크롤에 통합합니다.