[flutter] ListView 스크롤 처리하기

Flutter 앱을 개발할 때 리스트뷰를 사용하는 경우가 많습니다. 사용자가 많은 항목을 스크롤하거나 더 많은 항목을 로드할 때 스크롤 처리는 중요합니다. 이 블로그 포스트에서는 Flutter의 ListView에서 스크롤을 다루는 방법을 알아보겠습니다.

ScrollController 사용하기

ListView의 스크롤 이벤트를 다루려면 ScrollController를 사용할 수 있습니다. ScrollController를 사용하면 리스트뷰의 현재 스크롤 위치를 가져오거나 조작할 수 있습니다.

아래는 ScrollController를 사용하여 ListView의 스크롤 이벤트를 감지하는 예시입니다.

ScrollController _scrollController = ScrollController();

@override
void initState() {
  super.initState();
  _scrollController.addListener(() {
    if (_scrollController.position.pixels == _scrollController.position.maxScrollExtent) {
      // 리스트의 맨 아래에 도달했을 때 새로운 항목 로드
    }
  });
}

@override
void dispose() {
  _scrollController.dispose();
  super.dispose();
}

ListView.builder(
  controller: _scrollController,
  itemBuilder: (context, index) {
    return ListTile(title: Text('Item $index'));
  },
  itemCount: 100,
)

위 코드에서는 initState 메서드를 사용하여 ScrollController에 대한 리스너를 추가하고, dispose 메서드에서 리스너를 해제합니다. 또한 ListView.builder의 controller 속성에 ScrollController를 할당하여 리스트뷰의 스크롤을 다룰 수 있도록 합니다.

스크롤 위치 조작하기

ScrollController를 사용하면 ListView의 현재 스크롤 위치를 가져올 수도 있습니다. 예를 들어, 스크롤을 특정 위치로 이동시키고 싶을 때 ScrollController를 사용하여 scrollBy나 animateTo 메서드를 호출할 수 있습니다.

// 스크롤 위치로 이동
_scrollController.jumpTo(100.0);

// 부드럽게 스크롤 위치로 이동
_scrollController.animateTo(100.0, duration: Duration(milliseconds: 500), curve: Curves.ease);

결론

Flutter에서 ListView의 스크롤을 다루는 방법을 살펴보았습니다. ScrollController를 사용하여 스크롤 이벤트를 감지하고 스크롤 위치를 조작할 수 있습니다. 이러한 기능을 활용하여 사용자가 원활한 리스트 뷰 경험을 제공할 수 있습니다.

더 많은 정보는 Flutter 공식 문서를 참고하시기 바랍니다.