ScrollController
는 Flutter에서 스크롤 가능한 위젯을 제어하는 데 사용되는 객체입니다. ListView
, GridView
, SingleChildScrollView
와 같은 스크롤 가능한 위젯들은 스크롤 이벤트를 감지하고, 스크롤 위치를 조작하는 데 ScrollController
를 사용할 수 있습니다.
스크롤 위치 조절: ScrollController
를 사용하여 프로그래매틱하게 스크롤 위치를 조절할 수 있습니다. 예를 들어, 특정 위치로 스크롤하거나, 스크롤 가능한 리스트의 맨 아래나 맨 위로 이동할 수 있습니다.
스크롤 이벤트 감지: ScrollController
는 스크롤 이벤트를 감지하고, 현재 스크롤 위치에 대한 정보를 제공합니다. 이를 통해 스크롤 위치에 따라 특정 액션을 수행하게 할 수 있습니다.
스크롤 애니메이션: ScrollController
의 animateTo
메서드를 사용하여 부드러운 스크롤 애니메이션을 만들 수 있습니다. 이 메서드를 사용하여 스크롤을 특정 위치로 애니메이션과 함께 이동시킬 수 있습니다.
class MyScrollableWidget extends StatefulWidget {
_MyScrollableWidgetState createState() => _MyScrollableWidgetState();
}
class _MyScrollableWidgetState extends State<MyScrollableWidget> {
ScrollController _controller;
void initState() {
super.initState();
_controller = ScrollController();
}
void dispose() {
_controller.dispose(); // 리소스 정리를 위해 dispose 호출
super.dispose();
}
Widget build(BuildContext context) {
return ListView.builder(
controller: _controller, // ListView와 ScrollController 연결
itemCount: 100,
itemBuilder: (context, index) {
return ListTile(title: Text('Item $index'));
},
);
}
void _scrollToTop() {
_controller.animateTo( // 애니메이션과 함께 맨 위로 스크롤
0,
duration: Duration(seconds: 1),
curve: Curves.easeOut,
);
}
}
위 예제에서는 ListView.builder
에 ScrollController
를 연결하여 스크롤 위치를 조절하고, _scrollToTop
메서드를 통해 사용자가 버튼을 누르면 리스트의 맨 위로 스크롤하도록 했습니다.
초기 스크롤 위치 설정: ScrollController
를 생성할 때 initialScrollOffset
값을 설정하여 초기 스크롤 위치를 지정할 수 있습니다.
스크롤 방향 감지: ScrollController
의 position
속성을 사용하여 스크롤이 진행되고 있는 방향을 감지할 수 있습니다.
여러 스크롤 뷰 연결: 하나의 ScrollController
를 여러 스크롤 뷰에 연결하여 동기화된 스크롤을 만들 수도 있습니다.
ScrollController
는 스크롤 위치를 정밀하게 제어하고 스크롤 이벤트에 대응하는 다양한 상호작용을 구현할 때 필수적인 도구입니다.