Scrollbar

박동규·2023년 11월 23일
0

Widgets

목록 보기
14/18

ScrollController는 Flutter에서 스크롤 가능한 위젯을 제어하는 데 사용되는 객체입니다. ListView, GridView, SingleChildScrollView와 같은 스크롤 가능한 위젯들은 스크롤 이벤트를 감지하고, 스크롤 위치를 조작하는 데 ScrollController를 사용할 수 있습니다.

주요 기능

  • 스크롤 위치 조절: ScrollController를 사용하여 프로그래매틱하게 스크롤 위치를 조절할 수 있습니다. 예를 들어, 특정 위치로 스크롤하거나, 스크롤 가능한 리스트의 맨 아래나 맨 위로 이동할 수 있습니다.

  • 스크롤 이벤트 감지: ScrollController는 스크롤 이벤트를 감지하고, 현재 스크롤 위치에 대한 정보를 제공합니다. 이를 통해 스크롤 위치에 따라 특정 액션을 수행하게 할 수 있습니다.

  • 스크롤 애니메이션: ScrollControlleranimateTo 메서드를 사용하여 부드러운 스크롤 애니메이션을 만들 수 있습니다. 이 메서드를 사용하여 스크롤을 특정 위치로 애니메이션과 함께 이동시킬 수 있습니다.

사용 방법

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.builderScrollController를 연결하여 스크롤 위치를 조절하고, _scrollToTop 메서드를 통해 사용자가 버튼을 누르면 리스트의 맨 위로 스크롤하도록 했습니다.

고급 사용법

  • 초기 스크롤 위치 설정: ScrollController를 생성할 때 initialScrollOffset 값을 설정하여 초기 스크롤 위치를 지정할 수 있습니다.

  • 스크롤 방향 감지: ScrollControllerposition 속성을 사용하여 스크롤이 진행되고 있는 방향을 감지할 수 있습니다.

  • 여러 스크롤 뷰 연결: 하나의 ScrollController를 여러 스크롤 뷰에 연결하여 동기화된 스크롤을 만들 수도 있습니다.

ScrollController는 스크롤 위치를 정밀하게 제어하고 스크롤 이벤트에 대응하는 다양한 상호작용을 구현할 때 필수적인 도구입니다.

profile
내가 원하는 것을 만들자

0개의 댓글